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

Get largest column name that come before a given column name in a list of Excel columns string

请考虑以下列表:

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 查询 returns 这个结果?

谢谢

假设列表是有序的,这是一种可能的方式:

YourList.TakeWhile(o => ExcelToNumber(o) < ExcelToNumber("N"))
        .LastOrDefault();

ExcelToNumber()是excel列名转整数的方法,在this post中有提到。我在下面包含了方法定义以便于参考,100% 归功于链接 post :

的贡献者
int ExcelToNumber(string x) {
    return x.Aggregate(0, (s, c) => s * 26 + c - 'A' + 1);
}