.net Linq to SQL-如何按不在select中的列进行动态筛选 问题
使用链接到SQL,我想按我不希望在select语句中返回的列进行筛选。只要一次生成所有查询,这就可以正常工作。在我尝试动态构建where子句的情况下,会出现编译时错误,因为select中不包括该列.net Linq to SQL-如何按不在select中的列进行动态筛选 问题,.net,asp.net,linq,linq-to-sql,.net,Asp.net,Linq,Linq To Sql,使用链接到SQL,我想按我不希望在select语句中返回的列进行筛选。只要一次生成所有查询,这就可以正常工作。在我尝试动态构建where子句的情况下,会出现编译时错误,因为select中不包括该列 例子 工作 不起作用 我不知道该如何避开这件事。感谢您的帮助 您不能在以后进行选择吗?我不知道Vb,但类似于: Dim resultA = From logItem in dc.Log Select logItem If (Not String.IsNullOrEmpty(searchText)
例子 工作 不起作用
我不知道该如何避开这件事。感谢您的帮助 您不能在以后进行选择吗?我不知道Vb,但类似于:
Dim resultA = From logItem in dc.Log Select logItem
If (Not String.IsNullOrEmpty(searchText)) Then resultA = q.Where(Function(logItem) logItem.Message.Contains(searchText))
resultA = from logItem in resultA Select logItem.LogID, logItem.DateLogged
我认为这仍然会生成有用的SQL。您不能在以后进行选择吗?我不知道Vb,但类似于:
Dim resultA = From logItem in dc.Log Select logItem
If (Not String.IsNullOrEmpty(searchText)) Then resultA = q.Where(Function(logItem) logItem.Message.Contains(searchText))
resultA = from logItem in resultA Select logItem.LogID, logItem.DateLogged
我认为这仍然会生成有用的SQL。感谢您的输入。你的建议引起了我的思考,我的最终解决方案就是基于此。但是,我找到了一种重用同一对象的方法,即使用Lambda表达式在末尾指定一个select(与where语句的方式相同):
q=q.Select(函数(logItem)New Log With{.LogID=logItem.LogID,.DateLogged=logItem.DateLogged}感谢您的输入Steven。您的建议让我深思,我的最终解决方案就是基于此。不过,我找到了一种方法,通过使用Lambda表达式在末尾指定一个Select来重用同一对象(与where语句相同):
q=q.Select(Function(logItem)New Log With{.LogID=logItem.LogID,.DateLogged=logItem.DateLogged}第二个代码块中的“q”是什么?不应该是resultB=resultB.Where(…)?第二个代码块中的“q”是什么?不应该是resultB=resultB.Where(…)?没错。第一个查询返回IQueryable(Of t)其中T是一个不包含消息的匿名类型。这是可选where失败的原因。您可以将Select保留到末尾,然后将得到所需的结果。不过,您需要一个新变量来保存Select结果,因为它们将是与resultA不同的类型。没错。您首先查询返回IQueryable(Of T)其中T是不包含消息的匿名类型。这是可选where失败的原因。您可以将Select保留到末尾,然后将获得所需的结果。不过,您需要一个新变量来保存Select结果,因为它们的类型与resultA不同。
Dim resultA = From logItem in dc.Log Select logItem
If (Not String.IsNullOrEmpty(searchText)) Then resultA = q.Where(Function(logItem) logItem.Message.Contains(searchText))
resultA = from logItem in resultA Select logItem.LogID, logItem.DateLogged