C# 用于对组中的最小值进行排序的lambda表达式
我的表格数据是“C# 用于对组中的最小值进行排序的lambda表达式,c#,.net,lambda,expression,C#,.net,Lambda,Expression,我的表格数据是“ ExpenseID是主键列。 如果为personID插入记录,则记录的序列为1,历史代码指示0为活动记录。如果编辑记录,则插入新行,当前行历史代码更改为9,新行历史代码0和历史序列2。 如果为同一个人插入了另一条新记录,则会有一个序列号递增的新行 My resultSet应包含活动记录和记录插入顺序: 我需要lambda表达式 输出应该是 ExpenseID PersonID SeqNumb HistorySeqNumb HistoryCode 7 3
ExpenseID
是主键列。
如果为personID
插入记录,则记录的序列为1,历史代码指示0为活动记录。如果编辑记录,则插入新行,当前行历史代码更改为9,新行历史代码0和历史序列2。
如果为同一个人插入了另一条新记录,则会有一个序列号递增的新行
My resultSet应包含活动记录和记录插入顺序:
我需要lambda表达式
输出应该是
ExpenseID PersonID SeqNumb HistorySeqNumb HistoryCode
7 3 1 2 0
5 1 1 2 0
3 2 1 1 0
4 1 2 1 0
6 5 1 1 0
ExpenseID PersonID SeqNum历史SeqNum历史代码
7 3 1 2 0
5 1 1 2 0
3 2 1 1 0
4 1 2 1 0
我觉得你想要的结果好像不对
var sortedItems = rawItems.Where(w => (w.HistoryCode == 0)).ToList();
sortedItems.Sort((emp1, emp2) => emp2.ExpenseID.CompareTo(emp1.ExpenseID));
//where rawItems is a List<Object> where object has properties for ExpenseID, PersonID... etc
谢谢。但我需要记录插入表格的顺序请解释一下。如果ExpenseID是自动ID主键,则按顺序对其进行排序就是将其插入表格的顺序。或者更好的是,只需调整上面的LLAMDA,就可以按正确的顺序进行操作。
var sortedItems = rawItems.Where(w => (w.HistoryCode == 0)).ToList();
sortedItems.Sort((emp1, emp2) => emp2.ExpenseID.CompareTo(emp1.ExpenseID));
//where rawItems is a List<Object> where object has properties for ExpenseID, PersonID... etc
static void Main(string[] args)
{
var rawItems = new[] { new { ExpenseID = 0, PersonID = 0, SeqNumb = 0, HistorySeqNumb = 0, HistoryCode = 0 } }.ToList();
using (FileStream fs = new FileStream(Environment.CurrentDirectory + "\\data.xml", FileMode.Open, FileAccess.Read, FileShare.None))
{
XmlReader reader = XmlReader.Create(fs);
XDocument doc = XDocument.Load(reader);
fs.Flush();
doc.Root.Elements("Item").ToList().ForEach(i =>
{
var xExpenseID = Convert.ToInt32(i.Attribute("ExpenseID").Value);
var xPersonID = Convert.ToInt32(i.Attribute("PersonID").Value);
var xSeqNumb = Convert.ToInt32(i.Attribute("SeqNumb").Value);
var xHistorySeqNumb = Convert.ToInt32(i.Attribute("HistorySeqNumb").Value);
var xHistoryCode = Convert.ToInt32(i.Attribute("HistoryCode").Value);
rawItems.Add(new { ExpenseID = xExpenseID, PersonID = xPersonID, SeqNumb = xSeqNumb, HistorySeqNumb = xHistorySeqNumb, HistoryCode = xHistoryCode });
});
}
//sort
var sortedItems = rawItems.Where(w => (w.HistoryCode == 0)).ToList();
sortedItems.Sort((emp1, emp2) => emp2.ExpenseID.CompareTo(emp1.ExpenseID));
Console.Write("ExpenseID".PadRight(16, ' '));
Console.Write("PersonID".PadRight(16, ' '));
Console.Write("SeqNumb".PadRight(16, ' '));
Console.Write("HistorySeqNumb".PadRight(16, ' '));
Console.WriteLine("HistoryCode".PadRight(16, ' '));
foreach (var item in sortedItems)
{
Console.Write(item.ExpenseID.ToString().PadRight(16, ' '));
Console.Write(item.PersonID.ToString().PadRight(16, ' '));
Console.Write(item.SeqNumb.ToString().PadRight(16, ' '));
Console.Write(item.HistorySeqNumb.ToString().PadRight(16, ' '));
Console.WriteLine(item.HistoryCode.ToString().PadRight(16, ' '));
}
Console.ReadKey(true);
}