繁体   English   中英

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

[英]C# - Left Outer Join lambda expression error

我有以下表格:

Table1
{
    Code   //string
    Desc   //string
}

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

我需要左连接表,对于每个缺少的Table2代码/值,我想显示代码= 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?类型decimal?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM