0

我有以下类的嵌套列表:

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 与使用嵌套循环来做到这一点?

4

1 回答 1

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. 结束日期 > 今天
  2. 任何带有“Key1”而不是“Value1”的 KVP
  3. 任何带有“Key2”和“Value2”的KVP
于 2013-05-14T22:32:16.927 回答