首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq查询可能是空属性不是

问Linq查询可能是空属性不是
EN

Stack Overflow用户
提问于 2013-08-01 12:48:00
回答 2查看 840关注 0票数 3

我有一个属性是,而不是 null (它是PK)。但是,我有一个查询,该查询在该表中使用左联接,创建了空值的可能性。

LINQ

代码语言:javascript
复制
(from a in dbContext.TableA
join b in dbContext.TableB on a.IdB equals b.IdB into bLeft
from bTbl in bLeft.DefaultIfEmpty()
select new
{
    IdBTemp = bTbl.IdB, // This value may be null
    IdATemp = a.IdA
}.AsEnumerable().Select(row => new DynamicClassModel()
{
    // Stuff here (convertion to string, concatanations and other stuff)
});

*类别模式*

代码语言:javascript
复制
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column("IdB")]
public long IdB { get; set; }

这只是一个小的查询示例。我的查询比这个更大,还有更多的左联接,还有更多的字段没有映射为null,但是在这个查询中它们可能是null。

我在阅读关于放任的文章时,还试图用一些值(比如0)填充空值。

如何将空值传递给非空属性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-01 12:50:10

您可以尝试用默认值0填充它:

代码语言:javascript
复制
(from a in dbContext.TableA
join b in dbContext.TableB on a.IdB equals b.IdB into bLeft
from bTbl in bLeft.DefaultIfEmpty()
select new
{
    IdBTemp = bTbl == null ? 0 : bTbl.IdB,
    IdATemp = a.IdA
}.AsEnumerable().Select(row => new DynamicClassModel()
{
    // Stuff here (convertion to string, concatanations and other stuff)
});

但是,也许您希望使用int?代替。在这种情况下,请使用以下内容:

代码语言:javascript
复制
(from a in dbContext.TableA
join b in dbContext.TableB on a.IdB equals b.IdB into bLeft
from bTbl in bLeft.DefaultIfEmpty()
select new
{
    IdBTemp = bTbl == null ? (int?)null : bTbl.IdB,
    IdATemp = a.IdA
}.AsEnumerable().Select(row => new DynamicClassModel()
{
    // Stuff here (convertion to string, concatanations and other stuff)
});
票数 3
EN

Stack Overflow用户

发布于 2013-08-01 12:52:17

试着按您希望的那样指定默认值:bLeft.DefaultIfEmpty(0)或bLeft.DefaultIfEmpty(-1)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17994532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档