在C#中使用字符串查询LINQ查询到ORDER数据

时间:2015-01-30 19:55:56

标签: c# .net linq reflection

我有一个带两个字符串的函数。无法弄清楚如何将这两个字符串合并到LINQ查询中。

这是我的功能:

private void DataBind_GridView_Search(string OptionalArgsSortExpression = "", string OptionalArgsSortDirection = "")
{
List<mainSearchDataModel> Query = GetData();
if (Query != null)
{


    /* Problem ... */
    Query = from x in Query
            orderby OptionalArgsSortExpression.ToString() OptionalArgsSortDirection.ToString()
            select x;
    /* Problem ... */


    GridView_Search.DataSource = Query;
    GridView_Search.DataBind();
}

任何意见都将受到高度赞赏。

enter image description here

这是我得到的错误。我也没有使用DLINQ。

'System.Linq.Enumerable.OrderBy(System.Collections.Generic.IEnumerable,System.Func)'无法从用法中推断出来。尝试显式指定类型参数。

更新:

有没有办法对List或IEnumerable进行ORDER。似乎我尝试的一切都行不通。

有一种方法可以将它转换为DataView,但我也遇到麻烦,宁愿不这样做。

3 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情(如果你使用DLINQ ,正如他在评论中指出的那样Servy。):

var query = query.OrderBy(String.Format("{0} {1}",OptionalArgsSortExpression,OptionalArgsSortDirection));

答案 1 :(得分:0)

您可以使用我的OrderByString扩展名。它将字符串转换为对实际OrderBy方法的调用,因此它与所有Linq提供程序兼容。

using OrderByExtensions;

Query = Query.OrderBy(OptionalArgsSortExpression.ToString()
     + " " + OptionalArgsSortDirection.ToString())

https://github.com/Grax32/OrderByString

https://www.nuget.org/packages/OrderByString/

答案 2 :(得分:-1)

你可以走这条路

GridView.DataSource = Query.OrderBy(o => o.Field1).ThenBy(t => t.Field2).ToList()