将两个列表之间的值与LINQ关联

本文关键字:LINQ 关联 之间 列表 两个 | 更新日期: 2023-09-27 18:27:27

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

列出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#中做到这一点

将两个列表之间的值与LINQ关联

您可以通过以下方式进行操作。。。。。。。。。。。

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

newList包含在myList中具有id的个人信息。。。。。。。。。。。。。。。

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

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

您可以通过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;
   }
}

在控制器中,传递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
}

希望这能给你指引方向。