有条件地选择Linq新语句

本文关键字:语句 新语句 选择 Linq 有条件 | 更新日期: 2023-09-27 18:29:14

我需要选择数据来用实体框架填充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
                           };

感谢所有

有条件地选择Linq新语句

在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,您可以使用?.空条件成员访问运算符:

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,而不是空字符串。