3 回答
TA贡献1966条经验 获得超4个赞
您可以使用Except:
List<car> list1 = GetTheList();
List<car> list2 = GetSomeOtherList();
List<car> result = list2.Except(list1).ToList();
您甚至可能不需要这些临时变量:
List<car> result = GetSomeOtherList().Except(GetTheList()).ToList();
请注意,Except这不会修改任何一个列表-它会使用结果创建一个新列表。
TA贡献1866条经验 获得超5个赞
您不需要索引,因为List<T>该类允许您通过值而不是通过使用Remove函数来删除项。
foreach(car item in list1) list2.Remove(item);
TA贡献1818条经验 获得超11个赞
在我的情况下,我有两个不同的列表,具有相同的标识符,有点像外键。“ nzrytmn”引用的第二个解决方案:
var result = list1.Where(p => !list2.Any(x => x.ID == p.ID && x.property1 == p.property1)).ToList();
是最适合我的情况的一种。我需要加载没有已注册记录的DropDownList。
谢谢 !!!
这是我的代码:
t1 = new T1();
t2 = new T2();
List<T1> list1 = t1.getList();
List<T2> list2 = t2.getList();
ddlT3.DataSource= list2.Where(s => !list1.Any(p => p.Id == s.ID)).ToList();
ddlT3.DataTextField = "AnyThing";
ddlT3.DataValueField = "IdAnyThing";
ddlT3.DataBind();
- 3 回答
- 0 关注
- 395 浏览
添加回答
举报