Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/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# Linq:按ID分组,按级别排序,然后按字母顺序排列_C#_Linq_Linq To Dataset - Fatal编程技术网

C# Linq:按ID分组,按级别排序,然后按字母顺序排列

C# Linq:按ID分组,按级别排序,然后按字母顺序排列,c#,linq,linq-to-dataset,C#,Linq,Linq To Dataset,所以我有一个数据视图,它可以提取一些与机构相关的信息,我想按机构对数据进行分组,这样名称只出现一次,然后按字母顺序排列,然后按级别排列。级别将指级别1、级别2、级别3。在Linq有可能做到这一点吗?如果是,怎么做?谢谢 EnumerableRowCollection<DataRow> query = from agency in dtAllContacts.AsEnumerable() orderby agency.Field<Int32?>("ID

所以我有一个数据视图,它可以提取一些与机构相关的信息,我想按机构对数据进行分组,这样名称只出现一次,然后按字母顺序排列,然后按级别排列。级别将指级别1、级别2、级别3。在Linq有可能做到这一点吗?如果是,怎么做?谢谢

EnumerableRowCollection<DataRow> query = 
     from agency in dtAllContacts.AsEnumerable()
     orderby agency.Field<Int32?>("ID") == null ? 0 : agency.Field<Int32>("ID")
     orderby agency.Field<Int32>("Level")  
     select agency;
EnumerablerRowCollection查询=
来自dtAllContacts.AsEnumerable()中的代理
orderby agency.Field(“ID”)==null?0:代理字段(“ID”)
orderby agency.字段(“级别”)
选择代理机构;

您当前的代码不起作用,因为您对集合进行了两次排序—第一次是按id排序,第二次是按级别排序。您需要的是同时按id和级别进行排序。因此,您需要单个
orderby
运算符:

 from agency in dtAllContacts.AsEnumerable()
 orderby agency.Field<Int32?>("ID") == null ? 0 : agency.Field<Int32>("ID"),
         agency.Field<Int32>("Level")  
 select agency;
来自dtAllContacts.AsEnumerable()中的代理
orderby agency.Field(“ID”)==null?0:代理字段(“ID”),
机构领域(“级别”)
选择代理机构;
这将生成一个操作符。您还可以使用可为null类型的方法简化第一个条件:

 orderby agency.Field<int?>("ID").GetValueOrDefault(),
         agency.Field<int>("Level")
orderby agency.Field(“ID”).GetValueOrDefault(),
机构领域(“级别”)

您当前的代码不起作用,因为您对集合进行了两次排序—第一次是按id排序,第二次是按级别排序。您需要的是同时按id和级别进行排序。因此,您需要单个
orderby
运算符:

 from agency in dtAllContacts.AsEnumerable()
 orderby agency.Field<Int32?>("ID") == null ? 0 : agency.Field<Int32>("ID"),
         agency.Field<Int32>("Level")  
 select agency;
来自dtAllContacts.AsEnumerable()中的代理
orderby agency.Field(“ID”)==null?0:代理字段(“ID”),
机构领域(“级别”)
选择代理机构;
这将生成一个操作符。您还可以使用可为null类型的方法简化第一个条件:

 orderby agency.Field<int?>("ID").GetValueOrDefault(),
         agency.Field<int>("Level")
orderby agency.Field(“ID”).GetValueOrDefault(),
机构领域(“级别”)

我想您也可以使用
agency.Field(“ID”)??0
。嘿,busyberezovsky,分组怎么样?(“我想按机构对数据进行分组,然后按顺序排列”)@GertArnold嘿,我认为行将按ID进行“分组”(因为先按ID排序)。所以OP想要得到行集合类型的结果,我们可以对行进行分组,然后选择Many,但这可能会产生和按IDIO排序完全相同的结果。我把它读作
groupby
。无论如何,这是OP的电话。我想你也可以使用
agency.Field(“ID”)??0
。嘿,busyberezovsky,分组怎么样?(“我想按机构对数据进行分组,然后按顺序排列”)@GertArnold嘿,我认为行将按ID进行“分组”(因为先按ID排序)。所以OP想要得到行集合类型的结果,我们可以对行进行分组,然后选择Many,但这可能会产生和按IDIO排序完全相同的结果。我把它读作
groupby
。不管怎么说,这是行动的电话。