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
在所有呼叫之前。谢谢您的帮助!非常感谢。