获取Excel列字符串列表中给定列名称之前的最大列名称

时间:2016-04-25 04:06:49

标签: c# linq c#-4.0 lambda linq-to-entities

请考虑此列表:

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查询?

由于

1 个答案:

答案 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);
}