当我们有两个表,一个到零或一个关系。 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
答案 0 :(得分:2)
您需要在linq中使用左连接作为您的方案, 之后@ Patrick Hofman's代码将起作用
StringBuilder
答案 1 :(得分:1)
如果b
为空,因为无法在另一端找到,您可以使用ternary operator null
检查,可能与{{3}结合使用} b.number
:
number = b != null ? (b.number ?? 0) : 0;