C# 能否先将Linq查询构建为字符串,然后将其作为实际Linq运行?
我有一个显示列标题的datatable。单击标题时,它将根据该列通过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.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。当我尝试它时,这是一个相当大的任务
希望这能帮你找到正确的方向