动态生成LINQ
本文关键字:LINQ 动态 | 更新日期: 2023-09-27 18:25:49
我想在txt文件中对数据进行排序,为此我使用了下面的LINQ。。。
var lines = File.ReadLines(fileInfo.FullName)
.Select(x => x.Split('|').Reverse().ToArray())
.OrderBy(x => x[0])
.ThenBy(x => x[1])
.Select(x => string.Join("|", x));
问题是,这仅限于用于排序的索引0和1。
我想从外部传递列索引(用户输入),然后构造LINQ查询。可能有一列要排序,也可能有多列要排序。
有人能帮助我在运行时构建这种类型的linq并获得结果吗。
提前谢谢。
您可以使用类似的东西:
public void DoIt(int[] sortIndexes)
{
var lines = File.ReadLines(fileInfo.FullName)
.Select(x => x.Split('|').Reverse().ToArray())
.OrderBy(x => 0);
foreach (int index in sortIndexes)
{
lines = lines.ThenBy(x => x[index]);
}
lines = lines.Select(x => string.Join("|", x));
}
您可以使用动态LINQ。它可以从NuGet和项目网站上获得。
语法与上面的略有不同,但非常接近.OrderBy(x[1])