C# OrderBy,然后是匿名类的By

C# OrderBy,然后是匿名类的By,c#,linq,lambda,C#,Linq,Lambda,我有这个: List<string> lstRanksOrder = new List<string>() { "Captain", "Lieutenant", "Sergeant", "Corporal Master", "Corporal Senior", "Corporal 1", "Corporal", "Civilian Pilot" }; var emp = test .ToList() .Select(x => new

我有这个:

List<string> lstRanksOrder = new List<string>() { 
  "Captain", "Lieutenant", "Sergeant", "Corporal Master", 
  "Corporal Senior", "Corporal 1", "Corporal", "Civilian Pilot" };

var emp = test
  .ToList()
  .Select(x => new
     {
       EID = x.IBM,
       Description = string.Format("{0} {1}", x.FirstName, x.LastName),
       Group = x.RPosition
     })
  .AsEnumerable()
  .OrderBy(x => lstRanksOrder.IndexOf(x.Group))
  .ThenBy(x => x.Description)
  .Distinct()
  .ToList();
List lstRanksOrder=new List(){
“上尉”、“中尉”、“中士”、“下士长”,
“高级下士”、“1号下士”、“下士”、“文职飞行员”};
var emp=测试
托利斯先生()
.选择(x=>new
{
EID=x.IBM,
Description=string.Format(“{0}{1}”,x.FirstName,x.LastName),
组=x.r位置
})
.可计算的()
.OrderBy(x=>lstRanksOrder.IndexOf(x.Group))
.ThenBy(x=>x.Description)
.Distinct()
.ToList();
ThenBy
子句工作正常,但是有没有一种方法可以在不将
Description
更改为
DescriptionLastName
之前的

在调用
选择
扩展方法之前对集合进行排序:

var emp = test.ToList()
.OrderBy(x => lstRanksOrder.IndexOf(x.RPosition))
.ThenBy(x => x.LastName)
.ThenBy(x => x.FirstName)
.Select(x => new
{
    EID = x.IBM,
    Description = string.Format("{0} {1}", x.FirstName, x.LastName),
    Group = x.RPosition
})
.Distinct()
.ToList();
var emp = test.ToList()
.Distinct()
.OrderBy(x => lstRanksOrder.IndexOf(x.RPosition))
.ThenBy(x => x.LastName)
.ThenBy(x => x.FirstName)
.Select(x => new
{
    EID = x.IBM,
    Description = string.Format("{0} {1}", x.FirstName, x.LastName),
    Group = x.RPosition
})

.ToList();

Distinct
然后在调用
选择
扩展方法之前对集合进行排序:

var emp = test.ToList()
.OrderBy(x => lstRanksOrder.IndexOf(x.RPosition))
.ThenBy(x => x.LastName)
.ThenBy(x => x.FirstName)
.Select(x => new
{
    EID = x.IBM,
    Description = string.Format("{0} {1}", x.FirstName, x.LastName),
    Group = x.RPosition
})
.Distinct()
.ToList();
var emp = test.ToList()
.Distinct()
.OrderBy(x => lstRanksOrder.IndexOf(x.RPosition))
.ThenBy(x => x.LastName)
.ThenBy(x => x.FirstName)
.Select(x => new
{
    EID = x.IBM,
    Description = string.Format("{0} {1}", x.FirstName, x.LastName),
    Group = x.RPosition
})

.ToList();

为什么不
.ThenBy(x=>x.LastName).ThenBy(x=>x.FirstName)
?为什么要将FirstName和LastName结合起来?new always为您提供匿名是的,请将您的
orderby
thenby
放在
select
之前。您的第一次
ToList
呼叫应该是
AsEnumerable
呼叫,并且您的
AsEnumerable
呼叫应该被删除。@SamIam和
Distinct
在所有呼叫之前。谢谢您的帮助!非常感谢。