Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从列表中获取对象<;对象>;其中属性为null,顺序为最低_C# - Fatal编程技术网

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 :(
}