在Linq中会是什么样?

| 大家好,我想对LINQ有一个更清晰的了解。我有一组foreach循环,可用于遍历ID列表,然后将它们与对象ID列表进行比较,然后将它们添加到保存结果或比较的第三列表中。我想知道LINQ中的这段代码是什么样的 list1->整数ID列表 list2->对象列表
foreach (var mId in list1)
{
   foreach (var m in list2)
   {
      if (m.Obj.Id== mId)
      {
        result.Add(m);
        break;
      }
   }
}
    
已邀请:
基本上,这就是执行联接的循环逻辑。使用查询语法(更具可读性),您可以执行以下操作:
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);
    
它看起来像这样:
var result = list2.Where(i => list1.Contains(i.Obj.Id));
    
var query = list1.Join(list2, x => x, x => x.Obj.Id, (outer, inner) => inner);
    

要回复问题请先登录注册