我想连接两个表。两个表的连接列分别为第3列和第4列。
Visual Studio正在引发以下错误:
方法的类型参数
’系统。林克。可枚举。参加(System.Collections.Generic.IEnumerable,系统集合。通用的IEnumerable,系统。Func,系统Func,系统。Func)'
无法根据用法推断。请尝试显式指定类型参数。
我的代码如下:
int i = context.Table1.Where(u => u.column1 == true).Join(
context.Table2.Where(u => u.column2.ToUpper() == "COMPLETED"),
q => new { Column3 = q.column3, Column4 = q.column4 },
u => new { Column3 = u.column3, Column4 = u.column4 },
(q, u) => new { q.column1 }).Count();
这个查询有什么问题?
提前谢谢。
查询本身看起来不错,但我们不知道context.TableX
的完整类型。
对于要编译的Join,new { Column3 = q.column3, Column4 = q.column4 }
部分定义的两个匿名类型需要具有相同的属性类型,以便生成的匿名类型相同。Table1
和Table2
的条目是否具有相同的类型,或者可能是它们的列类型不匹配?
在我的机器上,线
l1.Join(l2,
d => new { P = d.Column1, Q = d.Column2 },
d => new { P = d.Column1, Q = d.Column2 },
(d, u) => new { d.Column1 }).Count();
编译良好,l1
和l2
都属于类型List<Dummy>
和Dummy
,仅具有两个整数属性。
我曾多次遇到这种情况,解决方案只是将每列强制转换为正确的类型:
int i = context.Table1.Where(u => u.column1 == true).Join(
context.Table2.Where(u => u.column2.ToUpper() == "COMPLETED"),
q => new { Column3 = (string)q.column3, Column4 = (decimal?)q.column4 },
u => new { Column3 = (string)u.column3, Column4 = (decimal?)u.column4 },
(q, u) => new { q.column1 }).Count();