相关疑难解决方法(0)

LINQ to SQL Where子句可选标准

我正在使用LINQ to SQL查询并遇到了一个问题,我有4个可选字段来过滤数据结果.通过可选,我的意思是可以选择输入值.具体来说,一些文本框可能有一个值或有一个空字符串和一些下拉列表可能已选择或可能没有...

例如:

    using (TagsModelDataContext db = new TagsModelDataContext())
     {
        var query = from tags in db.TagsHeaders
                    where tags.CST.Equals(this.SelectedCust.CustCode.ToUpper()) 
                    && Utility.GetDate(DateTime.Parse(this.txtOrderDateFrom.Text)) <= tags.ORDDTE
                    && Utility.GetDate(DateTime.Parse(this.txtOrderDateTo.Text)) >= tags.ORDDTE
                    select tags;
        this.Results = query.ToADOTable(rec => new object[] { query });
    }
Run Code Online (Sandbox Code Playgroud)

现在我需要添加以下字段/过滤器,但前提是它们是由用户提供的.

  1. 产品编号 - 来自另一个可以加入TagsHeaders的表.
  2. PO编号 - TagsHeaders表中的一个字段.
  3. 订单号 - 与PO#类似,只是不同的列.
  4. 产品状态 - 如果用户从下拉列表中选择了此项,则需要在此处应用所选值.

我已经拥有的查询工作得很好,但要完成该功能,需要能够在where子句中添加这4个其他项,只是不知道如何!

c# linq asp.net linq-to-sql

70
推荐指数
2
解决办法
9万
查看次数

Expression.Invoke在实体框架中?

实体框架不支持Expression.Invoke运营商.尝试使用它时收到以下异常:

"LINQ to Entities不支持LINQ表达式节点类型'Invoke'.

有没有人有这个缺少功能的解决方法?我想用详细的PredicateBuilder 这里的实体框架上下文.

编辑1 @marxidad - 我喜欢你的建议,但它确实让我感到困惑.您能就您提出的解决方案提供进一步的建议吗?

编辑2 @marxidad - 感谢您的澄清.

.net linq linq-to-entities entity-framework

29
推荐指数
1
解决办法
1万
查看次数

EF中的多个条件

可能重复:
条件Linq查询

使用Entity Framework 4.0

我有这样的搜索条件

在此输入图像描述

有四个字段允许用户过滤搜索.条件都是AND.如果文本框值为String.Empty或者下拉列表值为全部,则结果必须省略相应的过滤器.可以在存储过程中执行此操作,但我无法在Linq2SQL/Entity Framework方案中模仿这一点.

我的问题是这个,如何在Linq中根据一些输入值省略IEnumerable.Where?

c# linq asp.net entity-framework

22
推荐指数
3
解决办法
5万
查看次数

在C#/ .NET3.5中构建动态SQL查询的最佳方法?

我正在研究的一个项目涉及重构一个C#Com对象,它作为一些Sql 2005数据库的数据库访问层.

现有代码的作者使用字符串和许多if语句手动构建了所有sql查询,以构造相当复杂的sql语句(~10个连接,> 10个子选择,~15-25 where条件和GroupBy).基表始终是相同的,但连接,条件和分组的结构取决于传递给我的类/方法的一组参数.

像这样构建sql查询确实有效,但它显然不是一个非常优雅的解决方案(而且很难阅读/理解和维护)...我可以自己写一个简单的"querybuilder",但我很确定我不是第一个遇到这种问题的人,因此我的问题是:

  • 如何建立你的数据库查询?
  • C#是否提供了一种动态构建查询的简便方法?

c# sql linq sql-server .net-3.5

8
推荐指数
1
解决办法
1万
查看次数

Linq条件Where子句

在搜索linq条件where子句时,我发现了这篇文章,他们使用的方式如下:

var logs = from log in context.Logs
           select log;

if (filterBySeverity)
    logs = logs.Where(p => p.Severity == severity);

if (filterByUser)
    logs = logs.Where(p => p.User == user);
Run Code Online (Sandbox Code Playgroud)

但我想知道这种方法有效吗?linq会执行多少次查询?

linq-to-sql

5
推荐指数
2
解决办法
7768
查看次数

if-else通过where子句c#中的linq-to-sql查询等效

基本上我想在我的linq to sql语句中有一个if-else语句.

var query = from d in database
            if(x == y) {
                where d.Attr = x
            }
            else {
                 where d.Attr = y
            }
            select d;
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c# asp.net-mvc where-clause linq-to-sql

3
推荐指数
2
解决办法
4343
查看次数

如果我不确定哪些属性我想要匹配,如何将Where表达式添加到LINQ查询?

我有一种情况,我可能想按订单号或名称搜索.我知道我可以Where为我的LINQ查询添加一个表达式,但我只想为我正在搜索的属性添加它!我不知道在调用方法之前会提供哪个参数,那么如何添加正确的条件呢?

public JsonResult Search(int orderNo=0, string firstName="", string lastName="")
{
    if (orderNo >0){
        //add Condition
    }

    if (firstName.Length > 0){
        //add Condition
    }

    if (lastName.Length > 0){
        //add Condition
    }

    //get Result

    var result = Repository.Orders.Where(???).OrderByDescending(e=> e.orderNo);

    //return
}
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net

0
推荐指数
1
解决办法
325
查看次数