Performance LINQ-如何在一个查询中对这些数据进行排序
我想知道是否有任何方法可以使用LINQ对这段数据进行排序:Performance LINQ-如何在一个查询中对这些数据进行排序,performance,linq,c#-4.0,lambda,Performance,Linq,C# 4.0,Lambda,我想知道是否有任何方法可以使用LINQ对这段数据进行排序: Firstname lastname age Xxxxxxxxx xxxxxxxxx xxxx Xxxxxxxxx xxxxxxxxx xxxx * group YYYY <---- contained at firstName column Xxxxxxxxx xxxxxxxxx xxxx Xxxxxxxxx xxxxxxxxx xxxx * group BBB Xxxxxxxxx
Firstname lastname age
Xxxxxxxxx xxxxxxxxx xxxx
Xxxxxxxxx xxxxxxxxx xxxx
* group YYYY <---- contained at firstName column
Xxxxxxxxx xxxxxxxxx xxxx
Xxxxxxxxx xxxxxxxxx xxxx
* group BBB
Xxxxxxxxx xxxxxxxxx xxxx
Xxxxxxxxx xxxxxxxxx xxxx
* group LLL
我已经这样做了,使用For语句,从列表的末尾开始获取组名,然后将该值存储在局部变量中,并用“group name”
填充组列,然后使用LINQ选择FirstName
列不包含*
的所有位置
有什么想法吗?您可以使用聚合:
public static void Main()
{
var data = new MyClass[]
{
new MyClass{FirstName="Tom"},
new MyClass{FirstName="Dick"},
new MyClass{FirstName="Harry"},
new MyClass{FirstName="* group YYYY"},
new MyClass{FirstName="Matthew"},
new MyClass{FirstName="Mark"},
new MyClass{FirstName="Luke"},
new MyClass{FirstName="John"},
new MyClass{FirstName="* group BBB"},
new MyClass{FirstName="Moe"},
new MyClass{FirstName="Larry"},
new MyClass{FirstName="Curly"},
new MyClass{FirstName="* group LLL"},
};
var groups = new Dictionary<string, List<MyClass>>();
data.Aggregate(new List<MyClass>(), (a, b) =>
{
if (b.FirstName.StartsWith("* group "))
{
groups[b.FirstName.Substring(8)] = a;
return new List<MyClass>();
}
a.Add(b);
return a;
});
foreach (var group in groups.Keys)
foreach (var record in groups[group])
Console.WriteLine("{0} {1}", group, record.FirstName);
}
public class MyClass
{
public string FirstName { get; set; }
}
显示您当前的代码。哇!!真是太棒了,太强大了。谢谢你,先生。
public static void Main()
{
var data = new MyClass[]
{
new MyClass{FirstName="Tom"},
new MyClass{FirstName="Dick"},
new MyClass{FirstName="Harry"},
new MyClass{FirstName="* group YYYY"},
new MyClass{FirstName="Matthew"},
new MyClass{FirstName="Mark"},
new MyClass{FirstName="Luke"},
new MyClass{FirstName="John"},
new MyClass{FirstName="* group BBB"},
new MyClass{FirstName="Moe"},
new MyClass{FirstName="Larry"},
new MyClass{FirstName="Curly"},
new MyClass{FirstName="* group LLL"},
};
var groups = new Dictionary<string, List<MyClass>>();
data.Aggregate(new List<MyClass>(), (a, b) =>
{
if (b.FirstName.StartsWith("* group "))
{
groups[b.FirstName.Substring(8)] = a;
return new List<MyClass>();
}
a.Add(b);
return a;
});
foreach (var group in groups.Keys)
foreach (var record in groups[group])
Console.WriteLine("{0} {1}", group, record.FirstName);
}
public class MyClass
{
public string FirstName { get; set; }
}
YYYY Tom
YYYY Dick
YYYY Harry
BBB Matthew
BBB Mark
BBB Luke
BBB John
LLL Moe
LLL Larry
LLL Curly