gpt4 book ai didi

C# - 左外连接 lambda 表达式错误

转载 作者:行者123 更新时间:2023-11-30 20:38:03 25 4
gpt4 key购买 nike

我有以下表格:

Table1
{
Code //string
Desc //string
}

Table2
{
Code //string
Value //decimal?
}

我需要左连接表格,对于每个缺少的 Table2 代码/值,我想显示 Code = Table1.Code、Desc = Table1.Desc 和 Value = null 或空白。

我尝试了以下 lambda 表达式:

      var result = Table1.GroupJoin(
Table2,
x => x.Code,
y => y.Code,
(x, y) => g
.Select(c => new { x.Code, x.Desc, Value = y.Value })
.DefaultIfEmpty(new { x.Code, x.Desc, Value = null }))
.SelectMany(g => g);

并得到这些错误:
无法从用法中推断方法“System.Linq.Enumerable.DefaultIfEmpty(System.Collections.Generic.IEnumerable, TSource)”的类型参数。尝试明确指定类型参数。

无法分配给匿名类型的属性

所以,我更改了 ...DefaultIfEmpty... Value = 0 }...

并得到这些错误:“System.Collections.Generic.IEnumerable”不包含“DefaultIfEmpty”的定义,最佳扩展方法重载“System.Linq.Queryable.DefaultIfEmpty(System.Linq.IQueryable, TSource)”有一些无效参数

实例参数:无法从“System.Collections.Generic.IEnumerable”转换为“System.Linq.IQueryable”

有解决错误的想法吗?

最佳答案

您只需要在匿名类型初始值设定项中指定null 值的类型:

.DefaultIfEmpty(new { x.Code, x.Desc, Value = (decimal?) null }))

当您使用 0 时,您正在创建一个单独的匿名类型,该类型具有 int 类型的 Value 属性,而不是 decimal?

关于C# - 左外连接 lambda 表达式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35482709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com