c# - LINQ OrderBy 基于条件
问题描述
我想根据 CityName 对 List 进行排序,以便首先出现 CityName Lahore 的记录,然后是伊斯兰堡,然后是卡拉奇。以下是供参考的源代码,
class Address {
private City;
}
class City{
private CityName;
}
我正在寻找一种使用 LINQ OrderBy 方法的方法。
解决方案
您可以使用List.IndexOf
:
IEnumerable<string> query = cityList.OrderBy(orderedCityList.IndexOf);
如果订单列表中不包含字符串,则IndexOf
返回-1
这些城市将是第一个。如果您希望它们位于列表的末尾,您可以使用以下查询:
IEnumerable<string> query = cityList
.Select(s => new { City = s, Index = orderedCityList.IndexOf(s) })
.OrderBy(x => x.Index >= 0 ? x.Index : int.MaxValue)
.Select(x => x.City);
推荐阅读
- python - 2个numpy 2-D数组的散点图
- python - Python 中 readline 的替代方案
- python - tkinter 变量类未定义
- lambda - Failsafe withFallback():为什么 kotlin 编译器无法推断 lambda 类型?
- javascript - 无法将嵌套的 JSON 对象推送到数组中
- html - 设置div默认激活
- file-io - 如何在不指定完整绝对路径的情况下在 Julia 中加载文件?
- python - 逐行计算csv的总和
- c# - 在 WinForms 应用程序中通过 RDP 客户端连接到 Windows 10 的身份验证错误
- php - php 7.2(64 位)找不到 MS Access 驱动程序