繁体   English   中英

Linq与critera嵌套列表

[英]Linq with critera for nested list

我有以下课程的嵌套列表:

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而不是使用嵌套循环?

也许是这样,使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM