使用此代码时(简化为询问):
var rows1 = (from t1 in db.TABLE1
where (t1.COLUMN_A == 1)
select new { t1.COLUMN_B, t1.COLUMN_C });
var rows2 = (from t2 in db.TABLE2
where (rows1.Contains(t2.COLUMN_A))
select t2;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
无法从用法推断出方法'System.Linq.Enumerable.Contains(System.Collections.Generic.IEnumerable,TSource)'的类型参数.尝试显式指定类型参数.
我需要通过COLUMN_B过滤第一个结果,但我不知道如何.有没有办法过滤它?
Jar*_*Par 10
要使用Contains,您必须传递该类型的实例IEnumerable<T>
.匿名类型非常难.
相反,我会使用Any
扩展方法重载,它允许您指定比较lambda.例如
var rows2 = (from t2 in db.TABLE2
where (rows1.Any(x => x.COLUMN_B == t2.COLUMN_A))
select t2;
Run Code Online (Sandbox Code Playgroud)