Linq具有嵌套列表的标准

时间:2013-05-14 22:24:13

标签: c# linq

我有一个以下类的嵌套列表:

public class ClassD 
{
    public DateTime EndDate { get; set; }
    public List<StructKeyValuePair<string, string>> StructKeyValPairs { get; set; }
}

public class StructKeyValuePair<K, V>
{
    public K Key { get; set; }
    public V Value { get; set; }
}

我有List<ClassD> resultList并且需要检查该列表中是否存在具有此条件的行:

EnDate > today
Key == "Key1" and Value != "Value1"
Key == "Key2" and Value == "Value2"

我需要返回truefalse,具体取决于是否符合此条件。有没有一种简单的方法可以使用Linq单行使用嵌套循环?

1 个答案:

答案 0 :(得分:3)

也许是这样的,使用Linq Any

bool condition = resultList.Any(row => 
    row.EndDate > DateTime.Today 
    && row.StructKeyValPairs.Any(kvp => kvp.K == "Key1" && kvp.V != "Value1")
    && row.StructKeyValPairs.Any(kvp => kvp.K == "Key2" && kvp.V == "Value2")
);

如果有一行包含所有的行,则返回true(不确定我是否按照确切的逻辑猜对了):

  1. EndDate&gt;今天
  2. 任何带有“Key1”且不是“Value1”的KVP
  3. 任何带有“Key2”和“Value2”的KVP