小编eri*_*ric的帖子

结合多个谓词

在c#.NET 2.0中有什么办法!结合多个谓词?

假设我有以下代码.

List<string> names = new List<string>();
names.Add("Jacob");
names.Add("Emma");
names.Add("Michael");
names.Add("Isabella");
names.Add("Ethan");
names.Add("Emily");

List<string> filteredNames = names.FindAll(StartsWithE);

static bool StartsWithE(string s)
{
    if (s.StartsWith("E"))
    {
        return true;
    }
    else
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我:

Emma
Ethan
Emily
Run Code Online (Sandbox Code Playgroud)

所以这是非常酷的东西,但我知道希望能够使用多个谓词进行过滤.

所以我希望能够说出这样的话:

List<string> filteredNames = names.FindAll(StartsWithE OR StartsWithI);
Run Code Online (Sandbox Code Playgroud)

为了得到:

Emma
Isabella
Ethan
Emily
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?目前我只是过滤完整列表两次,然后将结果合并.但不幸的是,这是非常无效的,更重要的是我失去了原始的排序顺序,这在我的情况下是不可接受的.

我还需要能够迭代任意数量的过滤器/谓词,因为可能会有很多.

再次,它需要是一个.NET 2.0解决方案,遗憾的是我不能使用更新版本的框架

非常感谢.

c# predicate .net-2.0

33
推荐指数
3
解决办法
2万
查看次数

二进制字符串到整数

我有一个由用户输入的二进制字符串,我需要将其转换为整数.

起初我天真地使用了这条简单的线:

Convert.ToInt32("11011",2);
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果用户直接输入整数,则抛出异常.

Convert.ToInt32("123",2); // throws Exception
Run Code Online (Sandbox Code Playgroud)

如何确保用户输入的字符串实际上是二进制字符串?

  • try..catch ....但那太难看了.
  • 像"Int32.TryParse"这样的东西也许吧.

谢谢

c# string binary integer

26
推荐指数
1
解决办法
5万
查看次数

WPF捕捉控件

我现在的空闲时间项目,为了深入WPF MVVM,是我童年时常玩的旧拼图的"数字"副本.它基本上是一个简单的拼图,其中一个必须用不同类型的碎片填充给定的空间,以便整个空间被填充.但随着六角形空间的额外扭曲.

只是为了说明,这就是WPF目前的样子:

http://img190.imageshack.us/img190/2553/atomgridmolecule.png

因此,基本上有许多预定义的部分(如上面的橙色部分)可以"插入"给定的网格(上面的灰色部分).

所以结果看起来像这样:

http://img30.imageshack.us/img30/2553/atomgridmolecule.png

我希望用户(可能只有我^^)能够将碎片拖放到网格中.我希望拖动看起来自然意味着在拖动时具有正确的偏移量取决于用户单击该块的位置.

网格和分子都是相同的控件,来自WPF Panel类的自定义六边形面板控件.

问题在于如何进行"插入",特别是"拔出".

我有两个关于如何解决这个问题的想法:

  1. 只需为网格中的单元格着色并隐藏原始单元
    • 优点:
      • 零成本完美的细胞排列
    • 缺点:
      • 如果拖出来,使用正确的鼠标偏移在正确的位置重新创建一块,似乎不可能?难做
  2. 将片断贴在网格上并将其显示在顶部
    • 优点:
      • 拖出是一个简单的拖动操作,就像拖入一样
    • 坏处:
      • 不知何故必须将这件作品与下面的网格对齐,某种对齐方式

那我应该采取哪种方法?更重要的是我如何在WPF中实现这一点?特别是使用干净的MVVM方式.


非常感谢你的帮助!任何输入都非常感谢!

编辑:
谢谢阿兰,我也这么认为.

但是我现在该如何实现呢?

  • 我怎样才能真正得到坐标?
  • 所有的橙色圆圈都是相互关联的,那么我如何"移动"或更好地"插入"它们作为一个整体呢?

c# wpf controls

10
推荐指数
1
解决办法
2598
查看次数

如何在C#中与Windows Media Player交互

我正在寻找一种与独立完整版Windows Media Player进行交互的方法.
大多数情况下,我需要知道当前播放曲目的路径.

iTunes SDK让这非常简单,但不幸的是,使用Windows Media Player真的没有任何办法,至少在.Net(C#)中没有任何大量使用pinvoke,我不太满意.

谢谢

只是为了澄清:我不想在我的应用程序中嵌入一个新的Windows Media Player实例,而是控制/读取"真正的"完整版Windows Media Player,由用户单独启动

c# windows media wmp

9
推荐指数
3
解决办法
6万
查看次数

窗口顶部的iTunes或Xcode样式信息框

我有什么选择在Cocoa的iTunes顶部重新创建框,或者像Apple在XCode 4中使用的那样?

iTunes的

这只是一个普通的图像,控制在顶部吗?或者它是一个NSBox具有一些自定义风格的魔力?

graphics user-interface cocoa

8
推荐指数
1
解决办法
2387
查看次数

如何在ItemsControl周围放置边框?

我在一个usercontrol中有一个带有自定义面板的itemscontrol.usercontrols大小仅受父窗口大小的约束.

<UserControl>
  <Grid>
    <Border BorderBrush="DarkGray" BorderThickness="5">
      <ItemsControl ItemsSource="{Binding ActiveGame.Grid.CellsFlat}">
        <ItemsControl.ItemsPanel>
          <ItemsPanelTemplate>
            <Wpf:HexagonalPanel/>
          </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
          <DataTemplate>
            <Button />
          </DataTemplate>
        </ItemsControl.ItemTemplate>
      </ItemsControl>
    </Border>
  </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

我现在想要仅在生成的面板周围绘制边框.但相反,它是围绕整个网格绘制的,或者可能更精确地与网格大小相同.

我想我在HexagonalPanel上正确实现了MeasureOverride,它返回了正确的大小,所以它不应该绘制那个大小的边框吗?

我错过了什么?

wpf xaml border itemscontrol

6
推荐指数
2
解决办法
1万
查看次数

WCF中流媒体服务合同的大小和超时

我目前正在开发一个小项目,我需要通过互联网发送一个可能很大的文件.

经过一番辩论后,我决定选择流媒体选项,而不是采用分块方法.文件可能非常大,我真的不想指定一个确切的上限,2GB可能是4GB,谁知道.

当然这可能需要很长时间.我再也不想暂停.它只需要花费多长时间,无所谓.

在尝试不同大小的不同文件时,我慢慢地,一步一步地调整我的BasicHttpBinding的属性.我只是想知道我想出的价值观是否基本没问题,或者它们是否完全是邪恶的?

transferMode="Streamed"
sendTimeout="10675199.02:48:05.4775807"
receiveTimeout="10675199.02:48:05.4775807"
openTimeout="10675199.02:48:05.4775807"
closeTimeout="10675199.02:48:05.4775807"
maxReceivedMessageSize="9223372036854775807"
Run Code Online (Sandbox Code Playgroud)

这只是感觉不对,这些只是每个底层数据结构的最大可能值.但我不知道还能做什么.

再说一次:

这基本上是正确的方法吗?或者我在这里完全误解和滥用框架?

谢谢

c# streaming wcf wcf-binding

5
推荐指数
1
解决办法
2441
查看次数