如果FirstOrDefault返回null,则返回列表中的第一项
本文关键字:返回 一项 null FirstOrDefault 列表 如果 | 更新日期: 2023-09-27 18:25:35
我有一个产品的List
,我需要从列表中获取具有特定产品Id
的项目,该项目是我从querystring参数中获得的。但是,我可能并不总是有产品Id
传递给我。如果我没有产品Id
,我需要默认为列表中的第一个产品。
目前我有:
@Model.Products.FirstOrDefault(x => x.Id == productId);
这只是选择具有特定Id
的产品,如果没有,则默认为null
。
有办法实现我想要的吗?
听起来你想要:
var product = productId == null ? Model.Products.FirstOrDefault()
: Model.Products.FirstOrDefault(x => x.Id == productId);
...
@product
或者你的意思是:
@(Model.Products.FirstOrDefault(x => x.Id == productId) ??
Model.Products.FirstOrDefault())
如果尝试这样的操作会发生什么?
@if (productId != null) // assuming it's nullable
{
@Model.Products.FirstOrDefault(x => x.Id == productId)
}
else
{
@Model.Products.FirstOrDefault()
}
我知道这看起来可能有点麻烦,但很清楚它在做什么(想想如果其他人必须维护它),它应该会起作用。
但实际上,我可能更愿意在ViewModel
中设置它,然后访问我知道正确的值。
嘿,检查一下它可能会帮助你
MSDN链接:http://msdn.microsoft.com/en-us/library/bb340482.aspx
List<int> months = new List<int> { };
// Setting the default value to 1 after the query.
int firstMonth1 = months.FirstOrDefault();
if (firstMonth1 == 0)
{
firstMonth1 = 1;
}
Console.WriteLine("The value of the firstMonth1 variable is {0}", firstMonth1);
// Setting the default value to 1 by using DefaultIfEmpty() in the query.
int firstMonth2 = months.DefaultIfEmpty(1).First();
Console.WriteLine("The value of the firstMonth2 variable is {0}", firstMonth2);
/*
This code produces the following output:
The value of the firstMonth1 variable is 1
The value of the firstMonth2 variable is 1
*/