如果我的数据是List<Cat>,并且每只猫的年龄为10、9、8、7、6、5、4、3、2、1
我想根据范围1-3,4-8,9-10对列表重新排序
这样,得到的列表将是
3、2、1、8、7、6、5、4、10、9
我该怎么做呢?
我首先考虑创建三个查询:
var band1 = myList.Where(c => c <= 3);
var band2 = myList.Where(c => c => 4 && c <= 8);
var band3 = myList.Where(c => c >= 9);但是我不知道如何使用LINQ来组合结果,因为我有三个IEnumerable<Cat>。
使用的正确方法是什么,还是必须使用foreach
发布于 2013-04-12 03:04:46
您可以使用Concat。
var band1 = myList.Where(c => c <= 3);
var band2 = myList.Where(c => c => 4 && c <= 8);
var band3 = myList.Where(c => c >= 9);
var result = band1.Concat(band2).Concat(band3);发布于 2013-04-12 03:02:51
创建一个GetRange(Cat cat)方法,按该方法对列表进行排序:
myCatList.OrderBy(cat=>GetRange(cat));发布于 2013-04-12 03:08:29
这就是你如何使用一条LINQ语句来做你所要求的事情。
var ordered = items
.OrderBy(x => {
if(x <= 3) return 0;
if(x <= 8) return 1;
return 2;
})
.ThenByDescending(x => x);或者(假设项目已经按降序排列):
var ordered = myList
.OrderBy(x => {
if (x <= 3) { return 1; }
if (x <= 8) { return 2; }
return 3;
});https://stackoverflow.com/questions/15956716
复制相似问题