将两个列表之间的值与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#中做到这一点
您可以通过以下方式进行操作。。。。。。。。。。。
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
}
希望这能给你指引方向。