基于数组的排序列表 [英] Sort List based on Array

查看:113
本文介绍了基于数组的排序列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试根据字符串数组对自定义列表进行排序,但是我失败了,例如完全不对列表进行排序,

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆