使用LINQ将两个列表之间的值关联起来?

时间:2012-03-11 08:22:45

标签: c# linq list

我必须列出相同数据模型的项目

列出A

ID  Name Address
1  aaa  address1
2  bbb  address2
3  ccc  address3

myList

ID Name Address
1
2
3

我必须检查带有ID的主列表,并从该列表A中获取相应ID的其他值

我如何在linq c#

中执行此操作

4 个答案:

答案 0 :(得分:4)

您可以通过以下方式执行此操作...........

List<Person> newList = (from master in listMaster
                        from list in myList
                        where master.id == list.id
                        select master).ToList<Person>();

newList包含在myList中具有id的人物信息...............

答案 1 :(得分:2)

这将为列表A中的所有id提供myList中的所有值:

var res = from a in ListA
where myList.contains(a.ID)
select a

答案 2 :(得分:2)

您可以通过linq执行此操作,如下所示:

 myList = myList.Select(x=>listA.FirstOrDefault(y=>y.ID == x.ID)??x).ToList()

有效的方法是排序和比较元素,即O(n logn),如果两个列表中的元素都被排序,则为O(n):

listA = listA.OrderBy(x=>x.ID).ToList();
myList = myList.OrderBy(x=>x.ID).ToList(); 

int index = 0;
foreach(var item in listA)
{
   while(index < myList.Count && myList[index].ID < listA.ID)
      index++;
   if (index > myList.Count)
     break;

   if (myList[index].ID = item.ID)
   {
       myList[index] = item;
   }
}

答案 3 :(得分:0)

在控制器中

传递id

public ActionResult ListController(int id)  
{  
    //process code

    //syntax would be database.items.Select(list => list.ID = id) for checking with the master list for corresponding IDs

}

希望这会给你指路。