Linq to Sql问题与转换可以为空的二进制格式

时间:2011-02-22 13:38:35

标签: linq-to-sql

我正在尝试从db(SQL server 2008)获取图像,这些图像使用linq保存为二进制可空值到sql查询。 我的查询是:

var news = from topic in db.PublicNews
orderby topic.PostedDate descending                        
select new PublicNewsDto()
{
     Id = topic.Id,
     PostedDate = topic.PostedDate,
     Summary = topic.Summary,
     Text = topic.Text,
     NewsImg = topic.NewsImg.ToArray()
};

我有NullReferenceExeption。如果db不包含null值,则代码可以正常工作。

你能帮我吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您必须先测试topic.NewsImg在分配之前是否有值。如果它没有值,则传入一个空数组,如下所示:

NewsImg = topic.NewsImg.HasValue ? topic.NewsImg.Value.ToArray() : new byte[]

编辑:

干净的方法如下:

var news = from topic in db.PublicNews
            select new PublicNewsDto()
            {
                Id = topic.Id,
                PostedDate = topic.PostedDate,
                Summary = topic.Summary,
                Text = topic.Text,
                NewsImg = (topic.NewsImg.HasValue ? topic.NewsImg.Value : new byte[])
            };

            var orderedNews = news.OrderByDescending(e => e.PostedDate);