首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2013-02-28 
写一个linq 表达式或lambda表达式V1IEnumerableAV2IEnumerableAA是有一属性为IDV2是V1的子集求V1中

写一个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;

热点排行