读书人

写一个linq 表达式或lambda表达式,该如

发布时间: 2013-02-28 11:33:09 作者: rapoo

写一个linq 表达式或lambda表达式
V1=IEnumerable<A>

V2=IEnumerable<A>

A是有一属性为ID
V2是V1的子集
求V1中不在V2的数据,根据V1的A.ID 不等于V2的A.ID

在线等,谢谢 linq lambda 子查询
[解决办法]
listA.Where(x => listB.Select(z => z.ID == x.ID) == null);
[解决办法]
楼主的场景使用Except()更方便:


public static IEnumerable<TSource> Except<TSource>(
this IEnumerable<TSource> first,
IEnumerable<TSource> second
)

// 或

public static IEnumerable<TSource> Except<TSource>(
this IEnumerable<TSource> first,
IEnumerable<TSource> second,
IEqualityComparer<TSource> comparer
)

[解决办法]
引用:
V1=IEnumerable<A>

V2=IEnumerable<B>

A是有一属性为ID
B是有一属性为ID

求V1中不在V2的数据,根据V1的A.ID 不等于V2的B.ID

这个更一般化

var query=V1.Where(x=>!V2.Select(y=>y.ID).Contains(x.ID));
[解决办法]
引用:
引用:V1=IEnumerable<A>

V2=IEnumerable<B>

A是有一属性为ID
B是有一属性为ID

求V1中不在V2的数据,根据V1的A.ID 不等于V2的B.ID

这个更一般化
var query=V1.Where(x=>!V2.Select(y=>y.ID).Contains(x.ID));……

++1


var query = from x in V1
where !V2.Select(y => y.ID).Contains(x.ID)
select x;

读书人网 >.NET

热点推荐