我最近写了一个应用程序(vb.net),用于存储并允许搜索旧的议会计划。 现在,当应用程序运行良好时,前几天我正在查看用于生成SQL字符串以传递数据库的例程,这很糟糕。
我只是在这里发布一个问题,看是否还有其他人可以做到这一点。

我所拥有的是一个带有一堆控件的表单,这些控件的范围从文本框到单选按钮,每个控件都像数据库过滤器,并且当用户单击搜索按钮时,它是一个SQL字符串(我真的希望它成为LINQ查询,因为我已更改为LINQ to SQL),从完成的控件生成并运行。

我遇到的问题是将这些控件中的每一个与数据库中的字段进行匹配,并高效地生成LINQ查询,而无需执行“如果...则...否则”这样的问题。 陈述。 过去,我只是使用控件上的tag属性链接到数据库中的字段名称。

很抱歉,这有点令人困惑,难以描述。 只是把它扔在那里,看看是否有人有任何想法。

谢谢内森

===============>>#1 票数:0

您可以将每个控件包装在一个可以接受IQueryable的用户控件中,并在需要时附加到查询中。

所以您的页面代码可能会像

var qry = from t in _db.TableName
      select t;

然后将qry传递给每个用户控件上的方法

IQueryable<t> addToQueryIfNeeded(IQueryable<t> qry)
{
   if(should be added)
      return from t in qry
           where this == that
           select t;
   else
      return qry
}

然后,在完成每个控件之后,您的查询将完成,然后可以.ToList()。 关于LINQ的一件很酷的事情是直到您将.ToList()或.First()都没有发生。

===============>>#2 票数:0 已采纳

在对复杂的即席查询类型的事物进行编程时,属性可以是您最好的朋友。 采用更具说明性的方法,并使用一些自定义属性装饰类,接口和/或属性,然后编写一些通用的“胶水”代码,将您的UI绑定到模型。 这将使您的模型和演示变得灵活,而不必更改数千行的控制器逻辑。 实际上,这正是Microsoft构建Visual Studio“属性”页面的方式。 根据要求,您甚至可以在产品中使用Microsoft的“ EnvDTE.dll”。

===============>>#3 票数:0

我不知道这里的性能,但是如果您设置LINQ to SQL数据上下文类,则应该能够使用.Select(...)或.Where(...)查询数据库表。 您应该能够为其中任何一个动态构建lambda表达式。 为此,您可能会研究动态生成lambda表达式。 我已经完成了所有工作,直至达到了动态Lambda一代,但有可能。

===============>>#4 票数:0

我不确定100%如何实现这一目标,但我知道在ASP.NET MVC源代码中哪里是一个不错的起点。 在最近的版本中,它能够采用形式响应并将其传递到帮助程序方法中,该方法可以写入LINQ数据源。

我相信MVC是C#,因此,如果您要查找VB转换,可以尝试使用.NET Reflector并将其转换回VB。

===============>>#5 票数:0

我认为您正在搜索如何创建“动态” Linq查询, 是一个有关如何使用扩展方法库的示例。 这些方法采用字符串参数,而不是类型安全的语言运算符。

===============>>#6 票数:0

我不介意sfusco使用属性的方法。 我唯一不确定的是将属性附加到何处,因为如果我附加到设计器代码中的控件声明,它将在表单更改时重新生成。

还是我完全误解了sfusco的方法?

===============>>#7 票数:0

我认为也许正确的方法是使用扩展程序提供程序: MSDN文档

然后,您可以使用编辑器提供要连接的字段名称,并且可以为扩展程序提供程序传递IQueryable <T>,添加条件并返回IQueryable <T>。

  ask by Nathan W translate from so

未解决问题?本站智能推荐:

1回复

使用导航属性的LINQ查询生成多个SELECT语句

我有一个POCO域实体类,该类包含导航到相关记录的便捷方法。 我正在使用AdventureWorks2008R2数据库来演示我要完成的工作。 所有这些查询都可以在LINQPad中运行,以观察生成的SQL语句。 SalesOrderHeaders.Where(s => s.SalesO
2回复

Linq查询生成器

我有一个Linq查询: 但是有时候我只需要 恢复所有记录。 是否可以执行以下操作: 或是否必须编写代码
1回复

Linq搜索查询多个表

我已经为此代码苦苦挣扎,这是我的新手,所以请耐心等待。 下面的代码非常适合在名为Blog的表中进行搜索。 但是我还有3个表,它看起来像这样: 我希望我的代码搜索所有4个表,现在只搜索1个表。 以下是我的代码的一部分: 另一个小问题是View正在接收结果。 我不确定如何
2回复

我可以Linq查询多个变量吗?

我对linq有点新意,我不确定我的愿望是否可行。 我基本上有一个名为User的类,它包含一堆属性。 我想只填写我从查询中获取的名称和ID字段。 我的查询给了我适当的结果,但我不确定如何将其输入用户。 这是我得到的最接近的,但我意识到这是不正确的。 这将返回User_ID,Firs
2回复

Linq查询具有多个计数

我正在尝试使用LINQ查询此表: 这是我想做的: 这是我的LINQ查询: 我不知道我的查询出了什么问题,我不断收到以下消息: 替代解决方案: SQL查询:
1回复

在每个查询中将多个LINQ查询组合为OR语句

每个用户可以属于1至5个不同的俱乐部。 对于用户所属的每个俱乐部,我想在查询中将其添加为或语句,但是我不确定如何做到这一点。 这是我到目前为止所拥有的: 这是我要查找的语句:
4回复

C#Linq单个查询中的多个查询

我是Linq的新手,我正在尝试优化一些查询,但我不知道此查询是否可行: 成为一个。 我在考虑row_number() over(partition by... (SQL),但我不认为这是执行此操作的最佳方法。 是否可以将这六个独立的查询合并为一个查询?
5回复

在ASP.NET MVC中将多个参数传递给控制器​​; 另外,在LINQ-to-SQL中生成动态查询

我正在研究一个基本的问题管理系统,以便学习ASP.NET MVC。 我已经把它运行到相当不错的水平,但我遇到了一个问题。 我有一个名为Issue的控制器,其视图名为Open。 / Issue / Open列出当前系统上记录的所有未解决问题。 我已经定义了这样的路线: 到目前为
7回复

如何从linq查询中查看生成的sql

只是试图获取由linq查询生成的sql。
1回复

ASP .NET Crystal报表生成表单Linq查询

这可能是一个常见问题,但我发现了很多,但没有得到任何可以帮助我的答案。 我是ASP .NET开发的新手。 如果这个问题看起来很傻,请原谅。 当我是新手时,我只是为这个任务准备了一个简单的数据库。 我在数据库中有2个表。 name_table和value_table 。 我的.db