基于数组的排序列表 [英] Sort List based on Array
问题描述
我正在尝试根据字符串数组对自定义列表进行排序,但是我失败了,例如完全不对列表进行排序,
I am trying to sort a custom list based on a string array, but I am failing miserably e.g. its not sorting the list at all,
Public class CrateOrder
{
public int Id { get; set; }
public string Name { get; set; }
public Stream OrderStream { get; set; }
}
string[] selectedFruits = {"Apple", "Mango"}; // in real get from web services
var selectedFruitsList = selectedFruits.ToList();
List<CrateOrder> cFruit = GetCrateOrderFromWebServices();
var sorted = cFruit.OrderBy(s => selectedFruitsList.IndexOf(s.Name)).ToList();
列表排序不正确,我希望CrateOrder列表项基于selectedFruits进行排序...
It's not sorting the list properly, I want CrateOrder list item to be ordered based on selectedFruits...
推荐答案
如果水果的Name
属性与您的订购列表不完全匹配,则IndexOf
始终返回-1.要解决此问题,请指定一个不区分大小写的StringComparison
,但这不适用于IndexOf
的重载,因此您必须使用稍微复杂一点的方法:
If the Name
property of your fruit does not match your ordering list exactly, IndexOf
will always return -1. To get around this specify a case-insensitive StringComparison
, but that is not available as an overload to IndexOf
so you have to use a slightly more complex method:
var sorted = cFruit.OrderBy(
s => selectedFruitsList.FindIndex(
x => x.Equals(s.Name, StringComparison.OrdinalIgnoreCase)) )
.ToList();
这篇关于基于数组的排序列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!