Linq会是什么样子?

时间:2011-04-13 17:15:14

标签: c# linq

嘿大家我正试图更清楚地了解LINQ。我有一组foreach循环用于遍历ID列表,然后我将其与对象ID列表进行比较,然后将它们添加到保存结果或比较的第3个列表中。我想知道LINQ中这段代码会是什么样子 list1 - > int ID列表 list2 - >对象列表


foreach (var mId in list1)
{
   foreach (var m in list2)
   {
      if (m.Obj.Id== mId)
      {
        result.Add(m);
        break;
      }
   }
}

3 个答案:

答案 0 :(得分:8)

基本上,这是执行连接的循环逻辑。使用查询语法(更具可读性),您可以这样做:

var result = from mId in list1
             join m in list2 on m.Obj.Id equals mId
             select m;

或者,如果lambda是你的东西:

var result = list1.Join(list2, 
                        mId => mId, 
                        m => m.Obj.Id,
                        (mId, m) => m);

答案 1 :(得分:2)

它看起来像这样:

var result = list2.Where(i => list1.Contains(i.Obj.Id));

答案 2 :(得分:1)

var query = list1.Join(list2, x => x, x => x.Obj.Id, (outer, inner) => inner);