gpt4 book ai didi

c# - Linq 检查 null 并按 orderby 替换 null 值

转载 作者:太空狗 更新时间:2023-10-30 00:19:34 26 4
gpt4 key购买 nike

我有一个 linq 查询,其中有时字符串字段、产品名称可能为空、null。这是表中的一个新字段,如果尚未输入数据,则在运行查询时会出现错误。我需要做的是检查是否为 null,如果为 null,则用下拉列表中的文本值替换 null/空值。我已经尝试了几件事,但无法让它发挥作用。

public IQueryable<Product> BindProduct([Control("ddProductName")] int? ProductNameId)
{
var prod = from c in _DbContext.Products
where c.ProductNameId == ProductNameId
orderby string.IsNullOrEmpty(c.ProductName) ? ddProductName.SelectedItem.Text : c.ProductName,
c.ItemNumber
select c;
return prod;
}

更改为:

 public IQueryable<Product> BindProduct([Control("ddProductName")] int? ProductNameId)
{
var prodName = ddProductName.SelectedItem.Text;
var prod = from c in _DbContext.Products
where c.ProductNameId == ProductNameId
let sortName = c.Name ?? prodName
orderby sortName, c.ItemNumber
select new { c, sortName };
return prod;

}

更新:我不认为我说得很清楚。我需要做的是检查是否为 null,如果为 null,则将 null/空值替换为下拉列表中的文本值。

最佳答案

“让”关键字应该可以解决问题。

这是一个 LINQPad 示例:

var products = Enumerable.Range(0, 100).Select(q => new {ProductNameId = 1, ProductName = (q % 15 == 0 ? null : (q % 3 == 0 ? "Fizz" : (q % 5 == 0 ? "Buzz": q.ToString()))), ItemNumber = q});
var ddProductName_SelectedItem_Text = "FizzBuzz";
var ProductNameId = 1;
var prod = from c in products
where c.ProductNameId == ProductNameId
let sortName = c.ProductName ?? ddProductName_SelectedItem_Text
orderby sortName, c.ItemNumber
select c;
return prod; //prod.Dump(); //for linqpad debugging

关于c# - Linq 检查 null 并按 orderby 替换 null 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19142948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com