如果FirstOrDefault返回null,则返回列表中的第一项

Dan*_*lis 1 c# linq asp.net-mvc

我有一些List产品,我需要从列表中获取具有Id我从查询字符串参数获得的特定产品的项目.但是,我可能并不总是将产品Id传递给我.如果我没有产品Id,我需要默认使用列表中的第一个产品.

目前我有:

@Model.Products.FirstOrDefault(x => x.Id == productId);
Run Code Online (Sandbox Code Playgroud)

这只是选择具有该特定的产品Id,如果没有,则默认为null.

有没有办法实现我想要的?

Mar*_*ell 7

这听起来像你想要的:

var product = productId == null ? Model.Products.FirstOrDefault()
                    : Model.Products.FirstOrDefault(x => x.Id == productId);
...
@product
Run Code Online (Sandbox Code Playgroud)

或者你的意思是:

@(Model.Products.FirstOrDefault(x => x.Id == productId) ??
             Model.Products.FirstOrDefault())
Run Code Online (Sandbox Code Playgroud)