如果列之一为null,则联接返回null

时间:2018-06-20 05:33:02

标签: c# entity-framework linq

我有两个表PartsBlob

数据库部分

Id   name   x    y   z  partimageid
-----------------------------------
1    bolt   30   40  5       4 
2    screw  33   4   6     null

db.Blob

Id   content      name
------------------------------
4    fsbfvb       picture.png

如何获得带有图像内容的零件细节?

目前我正在这样做:

public async Task<IHttpActionResult> GetPart(int id)
{    
    var result = from part in db.Parts
                 join image in db.Blob on part.PartImageId equals image.Id
                 where part.Id == id
                 select new { part, image.Content};
    return Ok(result);
}

它正在工作,但是如果没有图像-部分也为null。我在这里做什么错了?

1 个答案:

答案 0 :(得分:0)

您的LINQ语句作为INNER JOIN执行。如果您想要左联接,则可以将其修改为如下所示:

var result = from part in db.Parts
                 join image in db.Blob on part.PartImageId equals image.Id into images
                 from image in images.DefaultIfEmpty()
                 where part.Id == id
                 select new { part, image.Content};