首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ to SQL字符串与空值连接

LINQ to SQL字符串与空值连接
EN

Stack Overflow用户
提问于 2010-01-22 00:33:17
回答 4查看 963关注 0票数 2

我的查询如下所示:

代码语言:javascript
复制
var products = from p in Products
               select new
               {
                  ProductId = p.ProductId,
                  Description = p.Quantity + " x " p.Price + ", " + p.ItemDescription
               };

我加入查询描述的原因是我对多个查询/对象这样做,以创建一个历史屏幕(有点像一个审计屏幕)。加载屏幕需要一段时间,所以我接受所有的查询并执行

代码语言:javascript
复制
products.Concat(otherProducts);

速度大大提高(2-3分钟降至2-3秒),但是,如果在本例中,p.ItemDescription (数据库中的VARCHAR(50) )为null,但Quantity和Price不为null,则整个Description字段将变为null。

有没有人遇到过这种怪癖?有人知道有什么方法可以让它显示“4x5.99”,而不只是设置为null吗?

任何帮助都将不胜感激,我一直在尝试解决这个问题,甚至不知道如何在google上真正搜索到这个问题。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-22 00:37:38

这不是LINQ-to-SQL的“怪癖”,这是标准的SQL行为。

如果我有这样的表达式:

代码语言:javascript
复制
columnA + columnB + columnC

并且这些列中的任何一列都为null,则整个表达式将被计算为null

您希望将空值合并为空字符串。试试这个:

代码语言:javascript
复制
select new
           {
              ProductId = p.ProductId,
              Description = p.Quantity + " x " + 
                            p.Price + ", " + 
                            (p.ItemDescription ?? "")
           }
票数 6
EN

Stack Overflow用户

发布于 2010-01-22 00:37:17

在sql术语中,将null与任何其他值连接会导致null。

所以,你有两个选择。首先(这就是我的做法),修改表中的ItemDescription字段使其不可为空。设置一个类似'‘(空白)的默认值。问题就消失了。

第二种选择是,修改您的linq代码以合并ItemDescription字段,以便在基础值为空时发出一个空白。我不是linq的人,所以我不知道该怎么做。

第二种方法的问题之一是,它必须为products结果集中的每个记录运行联合函数,这可能会对性能造成负面影响。

票数 2
EN

Stack Overflow用户

发布于 2010-01-22 00:40:15

这不是一个怪癖,这是SQL server上的默认行为(您可以在连接上使用SET CONCAT_NULL_YIELDS_NULL ON|OFF来启用或禁用它)。

你应该能够使用类似这样的东西来绕过它:

代码语言:javascript
复制
var products = from p in Products
               select new
               {
                  ProductId = p.ProductId,
                  Description = p.Quantity + " x " p.Price + ", " + (p.ItemDescription ?? "")
               };
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2110920

复制
相关文章

相似问题

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