gpt4 book ai didi

c# - Linq OrderBy 针对特定值考虑小写输入

转载 作者:行者123 更新时间:2023-11-30 20:21:27 25 4
gpt4 key购买 nike

string[] userInputs= {  "a","c","b"}
DataRow[] datarows=//datarows contains values like "A","B","C","D","E"
List<DataRow> data = datarows.CopyToDataTable().AsEnumerable().ToList();

IEnumerable<DataRow> orderedData = data.OrderByDescending(item => Array.IndexOf(userInputs, item.Field<string>(columnName)));

//我的数据行包含大写的所有值,但如果用户以小写输入,则它不起作用 linq-orderby-against-specific-values

编辑:我不能强制用户在下/上输入,甚至我的 DataRow 也将包含下/上两者中的数据。无论大小写如何,查询都应该有效。

最佳答案

在处理文本时最好使用文化安全比较。即使您现在认为您的代码永远不会本地化或使用来自其他文化的输入数据,最好还是养成正确编写代码的习惯。

在这种情况下,这意味着使用来自 StringComparer 的不区分大小写的比较器之一。例如:

string[] userInputs= {  "a","c","b"};
DataRow[] datarows=//datarows contains values like "A","B","C","D","E"
List<DataRow> data = datarows.CopyToDataTable().AsEnumerable().ToList();
StringComparer comparer = StringComparer.CurrentCultureIgnoreCase;

IEnumerable<DataRow> orderedData = datarows
.OrderByDescending(item => Array.FindIndex(
userInputs, input => comparer.Equals(input, item.Field<string>(columnName))));

注意:出于某种原因,您的原始代码示例使用了 OrderByDescending(),我在上面的示例中复制了该用法。但是,当然,这显然会导致数据行顺序实际上是 userInputs 中原始顺序的相反

关于c# - Linq OrderBy 针对特定值考虑小写输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33992848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com