Linq命令用一个字段在vb.net中动态检索

时间:2013-07-17 16:09:56

标签: vb.net linq

我有一个对象Ob,有几个字段f1,..,fn(不同类型)。 现在,GridView中显示了一个对象列表,我需要实现排序方法。

真正的问题是: 我该怎么办

(from ob in Ob_list orderby ob.f1 ascending)

当排序字段由字符串表示时(即“f1”)? 不幸的是我无法通过反射得到它(我无法做像ob.GetType()。GetField(“f1”),这不会映射到sql代码。)

我有几个字段可能对行进行排序,这是最好和最快的方法吗?

非常感谢!

2 个答案:

答案 0 :(得分:0)

LINQ执行被推迟到您实际枚举结果或访问" count"等等。因此,您可以分阶段构建LINQ语句。

下面的代码是用C#完成的,但我确定在VB.NET中可以使用等效代码。

首先设置您的基本查询:

var query = (from ob in Ob_list);

此时,由于延迟执行,实际上没有任何内容进入数据库。

接下来,有条件地按组件添加订单:

if (sortField == "f1")
{
  query = query.OrderBy(o => o.f1);
}
else if (sortField == "f2")
{
  query = query.OrderBy(o => o.f2);
}
else 
{
  //...
}

最后,收集结果

foreach (var item in query)
{
  // Process the item
}

答案 1 :(得分:0)

我发现了这个问题:How do I specify the Linq OrderBy argument dynamically?

我使用的是实体框架,所以第一个答案并没有解决我的问题。然而,第二个工作得很好!

希望它有所帮助!