在linq连接的结果中设置空值的默认值

时间:2015-06-24 06:14:56

标签: c# linq join

当我们有两个表,一个到零或一个关系。 tableA中可能有记录,tableB中没有相应的记录。
因此,Join Operation会为这些记录生成空值。 我的目标是用defalut值替换这些Null。
我的问题是如何使用linq在数据库上下文和C#上下文(当我们有标准的c#集合而不是db表时)这样做?

示例表:

  tableA{id , name , info}
  tableB{id , tableAid , number}

查询:

var result= from a in tableA join b in tableB on b.tableAid equals a.id 
            select new {id = a.id , name = a.name , number = b.number }

结果中的数字可能为null如果tableB中没有记录表中的特定记录。
我需要这样的东西:

if(result[i].number==null)result[i].numer=1

2 个答案:

答案 0 :(得分:2)

您需要在linq中使用左连接作为您的方案, 之后@ Patrick Hofman's代码将起作用

StringBuilder

答案 1 :(得分:1)

如果b为空,因为无法在另一端找到,您可以使用ternary operator null检查,可能与{{3}结合使用} b.number

number = b != null ? (b.number ?? 0) : 0;