c# - Linq orderby StringComparer 动态
问题描述
从我之前的问题。C# Linq OrderBy(x => x.property)
我动态指定了我的 linq orderby 参数。
var param = “attribute1”;
var propertyInfo = typeof(data).GetProperty(param);
List<data> newList = _list
.OrderBy(x => propertyInfo.GetValue(x, null))
.ToList();
问题是当我想通过 StringComparison.OrdinalIgnoreCase 订购时:
List<data> newList = _list
.OrderBy(x => propertyInfo.GetValue(x, null), StringComparer.OrdinalIgnoreCase)
.ToList();
我收到此错误:
无法从用法中推断方法“System.Linq.Enumerable.OrderBy(System.Collections.Generic.IEnumerable, System.Func, System.Collections.Generic.IComparer)”的类型参数。尝试明确指定类型参数。
通过不使其成为动态作品。但我希望这个命令动态参数。
List<data> newList = _list
.OrderBy(x => x.Attribute, StringComparer.OrdinalIgnoreCase)
.ToList();
解决方案
由于propertyInfo.GetValue
返回Object
(not String
) 你有一个语法错误。尝试投射到String
:
List<data> newList = _list
.OrderBy(x => propertyInfo.GetValue(x, null) as String,
StringComparer.OrdinalIgnoreCase)
.ToList();
推荐阅读
- laravel - Pdf Merge在laravel工作中花费太长时间
- powerbi - 我可以通过单击表格中的单元格在 Power BI 中钻取吗?
- log4j - Helm `toYaml` 不保留顺序
- android - 如何在 Android Studio (4.2) 中查看 JetpackCompose kotlin 源代码?
- python-3.x - NLP中筛选专有名词后如何区分一般人名
- xgboost - MLflow 是否支持分布式 XGBoost 模型?
- python - 值错误:多元线性回归模型中的形状未对齐
- python - Turtle Tk 主循环
- javascript - onCLick() 选项和选择问题
- spring-boot - Spring boot + lettuce 连接重试机制实现“Connection reset by peer”