我正在尝试使用联接功能在linq中应用联接表。但是我得到一个错误:
错误CS1941 join子句中的表达式之一的类型为 无效。类型推断无法调用“ GroupJoin”元素。
var query = from c in repos.GetTable<Table1>()
join ct in repos.GetTable<Table2>()
on c.Nr_PY equals ct.Nr_PY1 into g
from ct in g.DefaultIfEmpty()
select new
{
ct.Nr_PY1,
c.Name,
}.ToList();
您能帮我这段代码有什么问题吗?
谢谢您的帮助
答案 0 :(得分:0)
根据我的“重复”注释中的答案,联接中的列名称必须相同。就您而言,应该是:
join ct in repos.GetTable<Table2>()
on c.Nr_PY equals new { Nr_PY = ct.Nr_PY1 } into g
答案 1 :(得分:0)
您的查询首先有多个错误,无法将Anonymous type
转换为IList
,您将得到以下错误:
无法将类型System.Collections.Generic.List AnonymousType#1隐式转换为 System.Collections.Generic.List
因此您可以像这样更改代码:
var query = (from c in repos.GetTable<Table1>()
join ct in repos.GetTable<Table2>()
on c.Nr_PY equals ct.Nr_PY1 into g
from ct in g.DefaultIfEmpty()
select new myclass
{
value1=ct.Nr_PY1,
value2=c.Name,
}).ToList();
,第二个错误是Nr_PY,而Nr_PY1的类型不完全相同。
这是一个sql小提琴: https://dotnetfiddle.net/SBXLj2