我想对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查询。可以有1列排序或多列。
任何人都可以帮助我在运行时构造这种类型的linq并获得结果。
提前致谢。
答案 0 :(得分:3)
你可以使用类似的东西:
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));
}
答案 1 :(得分:0)
您可以使用Dynamic LINQ。它可以从NuGet和项目网站获得。
语法与您上面的内容略有不同,但非常接近.OrderBy(x[1])