我有List
个产品,我需要从列表中获取具有我从查询字符串参数获得的特定产品Id
的项目。但是,我可能并不总是将产品Id
传递给我。如果我没有产品Id
,我需要默认使用列表中的第一个产品。
目前我有:
@Model.Products.FirstOrDefault(x => x.Id == productId);
这只是选择具有该特定Id
的产品,如果没有,则默认为null
。
有没有办法达到我想要的目的?
答案 0 :(得分:7)
这听起来像你想要的:
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())
答案 1 :(得分:1)
如果你尝试这样的事情会怎样?
@if (productId != null) // assuming it's nullable
{
@Model.Products.FirstOrDefault(x => x.Id == productId)
}
else
{
@Model.Products.FirstOrDefault()
}
我知道这可能看起来有点麻烦,但很清楚它正在做什么(想想是否有其他人必须维护它)它应该有效。
但实际上我可能宁愿在ViewModel
中设置它,然后只访问我知道正确的值。
答案 2 :(得分:0)
嘿,检查这可能会对你有所帮助
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
*/