这是我的类型:
public class myType
{
public int Id { get; set; }
public string name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这种类型有2个集合:
List<myType> FristList= //fill ;
List<myType> Excludelist= //fill;
Run Code Online (Sandbox Code Playgroud)
我需要排除Excludelist从FristList类似以下内容:
List<myType> targetList =
FirstList.Where(m=>m.Id not in (Excludelist.Select(t=>t.Id));
Run Code Online (Sandbox Code Playgroud)
关于上述查询的确切lambda表达式,您有什么建议?
Jon*_*eet 15
三种选择.一个没有任何变化:
var excludeIds = new HashSet<int>(excludeList.Select(x => x.Id));
var targetList = firstList.Where(x => !excludeIds.Contains(x.Id)).ToList();
Run Code Online (Sandbox Code Playgroud)
另外,无论是覆盖Equals和GetHashCode及用途:
var targetList = firstList.Except(excludeList).ToList();
Run Code Online (Sandbox Code Playgroud)
或者写一个IEqualityComparer<MyType>按ID比较,并使用:
var targetList = firstList.Except(excludeList, comparer).ToList();
Run Code Online (Sandbox Code Playgroud)
第二个和第三个选项肯定是更好的IMO,特别是如果你需要在不同的地方做这种工作.
| 归档时间: |
|
| 查看次数: |
8483 次 |
| 最近记录: |