C#根据另一个List(不同类)的值序列对List进行排序
我目前陷入了一个问题,我有2个列表,我想根据第一个List中的值对第二个List进行排序,这是一个例子:
public class data { public string Name{get; set;} public int ID{get; set} } public class dataToSort { public int ID{get; set;} public string retrievedData{get; set} public string timeStamp{get; set} }
所以假设我有2个List对象,一个用于数据,一个用于dataToSort,它们的内容如下:
data: "Alpha", "80" dataToSort: "21", "XA", "YA" "Beta", "47" "47", "XB", "YB" "Charlie", "153" "80", "XC", "YC" "Delta", "21" "153","XD", "YD"
所以我想要做的是使dataToSort的顺序等于数据中ID的顺序,如下所示:
dataToSort: "80", "XC", "YC" "47", "XB", "YB" "153","XD", "YD" "21", "XA", "YA"
我已经尝试使用谷歌搜索排序这些,但所有LINQ语法混淆了我,我有问题,因为每个对象的类的差异:(我能想到的唯一方法是有一个for循环来获取索引一个List的ID并执行类似冒泡的排序,但它太麻烦而且效率低下。非常感谢帮助!
您可以加入ID上的两个列表:
var query = from x in data join y in dataToSort on x.ID equals y.ID select y; var result = query.ToList();
这保持了第一个列表data
的顺序。
您也可以通过这种方式轻松组合这两个列表:
var query = from x in data join y in dataToSort on x.ID equals y.ID select new { x.Name, x.ID, y.retrievedData, y.timeStamp, }; var result = query.ToList();
像这样的东西可以做到这一点(伪代码):
dataToSort sortedData; foreach data { sortedData.AddRange(from unsortedData.Where(x => x.ID == data.ID)); }
List lstofdata = new List(); List lstdataToSort = new List (); var q = from d in lstofdata join s in lstdataToSort on d.ID equals s.ID orderby d.Name select s
您可以通过IndexOf
加入两个列表和订单
var ordered = (from ds in dataToSort join d in data on ds.ID equals d.ID orderby data.IndexOf(d) select ds).ToList();
这应该是诀窍:
上述就是C#学习教程:C#根据另一个List(不同类)的值序列对List进行排序分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)
var list = dataList .Select(data => dataToSortList .First(x => x.ID == data.ID) ) .ToList();
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。
如若转载,请注明出处:https://www.ctvol.com/cdevelopment/955315.html