请考虑此列表:
var List1 = {};
var List2 = {"A"};
var List3 = {"AE"};
var List4 = {"A", "B", "F", "H", "AA", "AC", "AE"};
此列表是Excel列。现在我想找到一个在给定列名之前的列名,例如,如果我想找到之前的哪一列" N"我想从列表中得到这个结果:
null // From List 1
"A" // From List 2
null // From List 3
"H" // From List 4
如何为我编写返回此结果的LINQ查询?
由于
答案 0 :(得分:1)
假设列表是有序的,这是一种可能的方式:
YourList.TakeWhile(o => ExcelToNumber(o) < ExcelToNumber("N"))
.LastOrDefault();
ExcelToNumber()
是一种将excel列名转换为整数的方法,如this post中所述。我将下面的方法定义包含在内,以便于参考,100%归功于链接帖子的贡献者:
int ExcelToNumber(string x) {
return x.Aggregate(0, (s, c) => s * 26 + c - 'A' + 1);
}