小编Ken*_*ter的帖子

System.Diagnostics.Contracts有用的问题

我一直在玩新的System.Diagnostics.Contracts类,因为它起初看起来非常有用.用于检查入站参数,返回值等的静态方法.它是一个干净的接口,可以替换许多if-then语句和内部构建的库工具.

但是,它在大多数运行时情况下似乎不太有用.据我所知,它不会引发错误,所以我无法知道合同是否失败.它会弹出一个带有错误的对话框.如果我在远程盒子上运行wcf服务,很少有人看它...我怎么知道合同失败了?如果我无法捕捉错误发生的事实,我怎么能让服务的来电者知道他们已经搞砸了?

Throw-Catch已经存在了一段时间,我不明白为什么合同想绕过这个.我试图错误地使用这个东西吗?如果是这样,那么有人会给我一个真实的情况,其中运行时契约是有意义的.肯

.net code-contracts

28
推荐指数
1
解决办法
5731
查看次数

在List <List <T >>类型上使用FindAll

假设

public class MyClass
{
   public int ID {get; set; }
   public string Name {get; set; }
}
Run Code Online (Sandbox Code Playgroud)

List<MyClass> classList = //populate with MyClass instances of various IDs
Run Code Online (Sandbox Code Playgroud)

我可以

List<MyClass> result = classList.FindAll(class => class.ID == 123);
Run Code Online (Sandbox Code Playgroud)

这将给我一个ID = 123的类的列表.效果很好,看起来很优雅.

现在,如果我有

List<List<MyClass>> listOfClassLists = //populate with Lists of MyClass instances
Run Code Online (Sandbox Code Playgroud)

如何获得筛选列表本身被过滤的筛选列表.我试过了

List<List<MyClass>> result = listOfClassLists.FindAll
                      (list => list.FindAll(class => class.ID == 123).Count > 0);
Run Code Online (Sandbox Code Playgroud)

它看起来很优雅,但不起作用.它只包括类的列表,其中至少有一个类的ID为123,但它包含该列表中的所有MyClass实例,而不仅仅是匹配的实例.

我最终不得不这样做

List<List<MyClass>> result = Results(listOfClassLists, 123);

private List<List<MyClass>> Results(List<List<MyClass>> myListOfLists, int id)
{
   List<List<MyClass>> …
Run Code Online (Sandbox Code Playgroud)

.net c# list findall

3
推荐指数
1
解决办法
6973
查看次数

标签 统计

.net ×2

c# ×1

code-contracts ×1

findall ×1

list ×1