我有一个以下类的嵌套列表:
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"
我需要返回true
或false
,具体取决于是否符合此条件。有没有一种简单的方法可以使用Linq单行使用嵌套循环?
答案 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(不确定我是否按照确切的逻辑猜对了):