C# 从列表中获取对象<;对象>;其中属性为null,顺序为最低
我有一门课:C# 从列表中获取对象<;对象>;其中属性为null,顺序为最低,c#,C#,我有一门课: 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. List menus=new List()//假设包含10
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.
List menus=new List()//假设包含10项。
如何从列表中获取项目,其中值==null
且顺序是项目中最小的值
例如:
菜单项可以有如下顺序:10,20,30,40,50…
没有具有相同顺序的项目,每个项目都有一个唯一的数字值
我有兴趣在订单最小且值为空时获取菜单。在这种情况下,订单为10且值为空的项目。您可以使用LINQ实现:
var menuItem = menus.Where(m => m.Value == null).OrderBy(m=>m.Order).First();
这假定列表中至少有一项。如果没有项目,可以使用
.FirstOrDefault()
。使用LINQ按顺序对列表排序,然后获取第一个具有空值的项目
Menu mn = menus.OrderBy(x => x.Order).FirstOrDefault(m => m.Value == null);
if(mn != null)
{
// Got it
}
else
{
// No match for your condition
}
使用Linq进行以下操作:
var result = menus.Where(x => x.Value == null).OrderBy(x => x.Order).FirstOrDefault();
其中,仅接受值==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、OrderBy等方法构建查询。。。并且仅在调用以下方法之一时执行:
query.ToList();
query.ToArray();
query.First();
query.FirstOrDefault();
etc...
当使用FirstOrDefault时,不要忘记通过检查结果是否为null来检查是否有结果
if(result != null){
// The result is found :)
}
else {
// No results :(
}