Linq新条款有条件选择

时间:2016-01-06 13:41:51

标签: c# entity-framework linq

我需要选择数据来填充MVC Asp.net中的DataGrid和实体框架。当我选择所有值时,我需要连接三个表的值:e,类别和产品。连接始终为1到0或1.我已使用此代码选择了所有walue但是当没有category.name关联时,我自然会有异常。这样做的最佳方法是什么?我是否需要在New构造函数中使用if?或其他?

var products = from e in dbResult
                           select new
                           {
                               e.Id,
                               e.Title,
                               e.Price,
                               e.Quantity,
                               e.category.nome,
                               e.Product.Sottotitolo,
                               e.Procuct.Provenienza
                           };

感谢所有

1 个答案:

答案 0 :(得分:2)

在C#6之前,一种方法是:

var products = from e in dbResult
                           select new
                           {
                               e.Id,
                               e.Title,
                               e.Price,
                               e.Quantity,
                               Noma = e.category == null ? "" : e.category.nome,
                               Sottotitolo = e.Product == null ? "" : e.Product.Sottotitolo,
                               Provenienza = e.Procuct == null ? "" : e.Procuct.Provenienza
                           };

使用C#6,您可以使用?. null-conditional member access运算符:

var products = from e in dbResult
                           select new
                           {
                               e.Id,
                               e.Title,
                               e.Price,
                               e.Quantity,
                               Noma = e.category?.nome,
                               Sottotitolo = e.Product?.Sottotitolo,
                               Provenienza = e.Procuct?.Provenienza
                           };

请注意,后一种方法中的字段值将为null而不是空字符串。