C# 能否先将Linq查询构建为字符串,然后将其作为实际Linq运行?

C# 能否先将Linq查询构建为字符串,然后将其作为实际Linq运行?,c#,linq,C#,Linq,我有一个显示列标题的datatable。单击标题时,它将根据该列通过Linq对数据集进行排序: datatable.OrderByDescending(x => x.ColumnHeader).ToList() 目前,我有一个方法,它将头名称传递给一个switch case,然后该switch case将输出格式正确的Linq语句 switch (fruitType) { case "Apple": output = output.OrderByDescending(x

我有一个显示列标题的datatable。单击标题时,它将根据该列通过Linq对数据集进行排序:

datatable.OrderByDescending(x => x.ColumnHeader).ToList()
目前,我有一个方法,它将头名称传递给一个switch case,然后该switch case将输出格式正确的Linq语句

switch (fruitType)
{
    case "Apple":
    output = output.OrderByDescending(x => x.Apple).ToList();
    break;
case "Orange":
    output = output.OrderByDescending(x => x.Orange).ToList();
    break;
case "Peach":
    output = output.OrderByDescending(x => x.Peach).ToList();
    break;
case "Grapefruit":
    output = output.OrderByDescending(x => x.Grapefruit).ToList();
    break;
}
但这是大量重复的代码。我想知道是否有办法实现以下目标:

List<FruitBasket> output = GetFruitBasket();
List<string> fruitTypes = new List<string>(new string[] { "Apple",
                                                          "Orange", 
                                                          "Peach",
                                                          "Grapefruit" });
foreach (string type in fruitTypes)
{
    string query = $"output.OrderByDescending(o => o.{type}).ToList()";
    output = SomehowRunAsLinq(query);
    // Do stuff...
}
List output=GetFruitBasket();
列表水果类型=新列表(新字符串[]{“Apple”,
“橙色”,
“桃子”,
“葡萄柚”});
foreach(水果类型中的字符串类型)
{
字符串查询=$“output.OrderByDescending(o=>o.{type}).ToList()”;
输出=SomehowRunAsLinq(查询);
//做些事情。。。
}
或者,如果有一种方法可以更好地完成我想做的事情,请让我知道

这似乎就是你想要的答案。我隐约记得,您不能轻易地将字符串转换为linq。当我尝试它时,这是一个相当大的任务

希望这能帮你找到正确的方向