【问题标题】:Searching for object in IList or IQueryable在 IList 或 IQueryable 中搜索对象
【发布时间】:2010-11-06 05:28:20
【问题描述】:

我需要在 IQueryable 列表中查找项目的匹配项。我有一个清单如下:

IQueryable<EventItem> eventItems = new Queryable<EventItem>();
EventItem eventItem1 = new EventItem("Event 1");
EventItem eventItem2 = new EventItem("Event 2");
eventItems.Add(eventItem1);
eventItems.Add(eventItem2);

我现在想通过传入像 eventItem2 这样的 EventItem 在列表中查找事件。我如何搜索和返回类似的项目 EventItem found = eventItems.Select(eventItem2);

干杯,

S

【问题讨论】:

    标签: linq select iqueryable ilist


    【解决方案1】:

    使用 LINQ 你可以做到:

    EventItem found = eventItems.SingleOrDefault(item => item.Name == "Event 2");
    

    假设 EventItem 的名称通过 Name 属性公开。

    item =&gt; [code] 部分是您提供返回 true/false 的方法,以决定项目是否匹配。

    【讨论】:

    • 很遗憾这没有被接受,它是第一个,更简洁/可读,更高效并且在第一次尝试时拼写正确!
    • 干杯!只要人们看到答案,一切都很好。
    【解决方案2】:

    Linq 提供了一个 .Where 方法,可让您传入一个 lambda 表达式来评估您要查找的项目。

    EventItem found = eventItems.Where(e => e == eventItem2).SingleOrDefault();
    

    found 可能为 null,因此您只需检查它是否在可查询/列表中找到它

    【讨论】:

    • 在我修复它之前你刚刚找到了答案 ;-)
    • 谢谢乔尔,当你看到它时总是很简单
    猜你喜欢
    • 2012-10-20
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多