【问题标题】:How do I convert this LINQ query to lambda query?如何将此 LINQ 查询转换为 lambda 查询?
【发布时间】:2015-05-01 17:18:24
【问题描述】:

如何将此 LINQ 查询转换为 lambda 查询?

public List<Tuple<Klasa2,Klasa2>>CompareLists(List<Klasa2>list1,List<Klasa2>list2)
{
    var pary=
        from l1 in list1
        from l2 in list2
        where l1.tytul.Length<l2.tytul.Length
        select new Tuple<Klasa2,Klasa2>(l1,l2);
    return pary.ToList();
}

【问题讨论】:

  • “将此 LINQ 查询转换为 lambda”是什么意思?
  • 仅供参考,这里的正确措辞是“将 Linq 查询语法转换为 Linq 方法语法”

标签: c# linq lambda


【解决方案1】:

这是你要找的吗?

public List<Tuple<Klasa2, Klasa2>> CompareLists(List<Klasa2> list1, List<Klasa2> list2)
{
    var pary =
        list1.SelectMany(l1 => list2, (l1, l2) => new {l1, l2})
            .Where(@t => @t.l1.tytul.Length < @t.l2.tytul.Length)
            .Select(@t => new Tuple<Klasa2, Klasa2>(@t.l1, @t.l2));
    return pary.ToList();
}

【讨论】:

  • 为什么要在t 前面加上@?这不是保留字。
  • 不,它不是保留的。而我没有...... ReSharper 做到了...... :)
  • SelectMany 创建Tuple 可能稍微好一点,然后甚至不需要Select
猜你喜欢
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
相关资源
最近更新 更多