【问题标题】:How do I query multiple lists as well as select multiple items如何查询多个列表以及选择多个项目
【发布时间】:2021-11-12 19:12:59
【问题描述】:

我对 LINQ 和一般查询相当陌生。

我的目标是从每个列表中获取值,比较它们,然后将两个列表中的值添加到生成的 IEnumerable 中。这是我当前的工作代码,具有预期的结果,但我想知道是否有办法缩短或简化它

query1a 执行查询并选择所有偶数 query1b 执行相同的查询,只是它选择所有奇数 query1 以升序从 query1a 和 query1b 的联合中获取所有值

IEnumerable<int> query1a =
    (from e in evens
    from o in odds
    where e > o * 2
    select e).Distinct();

IEnumerable<int> query1b =
    (from e in evens
    from o in odds
    where e > o * 2
    select o).Distinct();

IEnumerable<int> query1 = from n in query1a.Union(query1b) orderby n ascending select n;

foreach (int item in query1)
{
    Console.WriteLine(item);
}

【问题讨论】:

  • 条件似乎不同的地方。在第二个查询中,您使用了大于或等于而不是大于。是不是打错字了?
  • 我只是想了解您的意图是否在两种情况下都执行完全相同的查询,只是更改您选择的内容。另一个问题,您是否正在对内存中的对象执行查询?换句话说,这是对象的 linq 吗?
  • @EnricoMassone 是的,我错了。

标签: c# linq


【解决方案1】:

我认为您遇到了select 问题,因为前两个查询几乎相同,只是您在第一个查询中选择偶数,在第二个查询中选择奇数。然后,您有第三个查询,您在其中合并结果并获得唯一且有序整数的 IEnumerable

如果这听起来不错,那么您可以在一个查询中完成所有操作:

var q = (from od in odds
            from ev in evens
            where ev > od * 2
            from n in new[] { od, ev }
            orderby n ascending
            select n).Distinct();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-26
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    相关资源
    最近更新 更多