![](/img/trans.png)
[英]How to get the property from a list of object that is a string with the lowest numeric value
[英]Get object from List<object> where property is null and order is the lowest
我有一节课:
public class Menu
{
public Menu()
{
}
public string Value { get; set; }
public int Order { get; set; }
}
接着:
List<Menu> menus = new List<Menu>() // contains 10 items let's say.
如何从列表中获取Value == null
且订单是项目中最小值的项目?
例:
菜单项可以有这样的订单: 10, 20, 30, 40, 50 ...
没有具有相同订单的商品,每个商品都有唯一的数字值。
我有兴趣在订单最小的时候获取菜单,而值为空。 在这种情况下,Order为10且Value为null的项目。
使用Linq:
var result = menus.Where(x => x.Value == null).OrderBy(x => x.Order).FirstOrDefault();
只使用Value == null的对象
OrderBy通过Order属性对它们进行排序
如果没有匹配查询的FirstOrDefault采用第一个值或返回null
// This can be written in a shorter form
var resultWithShorterLinq = menus.OrderBy(x => x.Order).FirstOrDefault(x => x.Value == null);
两种方式都是等价的,因为使用Linq,您首先使用Where,OrderBy,OrderByDescending等方法构建查询...并且只有在调用以下方法之一时才执行它:
query.ToList();
query.ToArray();
query.First();
query.FirstOrDefault();
etc...
当使用FirstOrDefault时,不要忘记检查是否有结果通过检查它是否为空
if(result != null){
// The result is found :)
}
else {
// No results :(
}
您可以使用LINQ来实现:
var menuItem = menus.Where(m => m.Value == null).OrderBy(m=>m.Order).First();
这假定列表中至少有一个项目。 如果没有项目,您可以使用.FirstOrDefault()
代替。
使用LINQ按顺序排序List,然后获取具有空值的第一个
Menu mn = menus.OrderBy(x => x.Order).FirstOrDefault(m => m.Value == null);
if(mn != null)
{
// Got it
}
else
{
// No match for your condition
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.