How to make types match in LINQ to Entities when using .GroupJoin extension with multiple conditions?
我陷入类型匹配问题。 首先,通过检查以下内容来确保语法正确:
正确的Join / GroupJoin实施
我尝试替换所有条件,并发现我的类型不匹配。 这是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 | var waQ = someRepository.GetAllQ(); var wrQ = someOtherRepository.GetAllQ(); query = waQ .GroupJoin(wrQ, wa => new { wa.someInt, wa.someNullableInt }, wr => new { wr.someMatchingInt, wr.someNonNullableInt }, (wa, wr) => new { wa, reqOrderID = wr.FirstOrDefault().someMatchingInt, reqWorkerID = wr.FirstOrDefault().someNonNullableInt }) .Select([etc.]); |
我得到的错误特别是不能从用法中推断出类型实参。 我相信潜在的错误是我无法将nullable int与non-nullable int进行匹配。
但是,我很难找到解决方法。 我尝试将非可空int强制转换为" int?"。 我得到这个错误:
Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.
我也尝试过(int?)并尝试将它们都转换为字符串(.ToString())。 没运气。
有没有人有什么建议?
在您建议它之前,不允许我将wa.someNullableInt设置为不可为空,这对于程序也没有意义。
在此先感谢您的帮助!
问题在于,第二个和第三个参数是
您有两种不同的匿名类型
1 2 3 4 5 6 7 8 9 | query = waQ .GroupJoin(wrQ, wa => new { si = wa.someInt, nsi = wa.someNullableInt }, wr => new { si = wr.someMatchingInt, nsi = (int?)wr.someNonNullableInt }, (wa, wr) => new { wa, reqOrderID = wr.FirstOrDefault().someMatchingInt, reqWorkerID = wr.FirstOrDefault().someNonNullableInt }) .Select([etc.]); |
您应该能够将其强制转换为
Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.
您应该能够按照以下方式进行投射:
1 2 3 4 5 |