【问题标题】:How can i call from another method a linq?我如何从另一种方法调用 linq?
【发布时间】:2017-09-28 08:34:07
【问题描述】:

在这种方法中,我创建了 linq。 Linq 工作正常,我可以正确查看数据,但问题是我需要能够从其他方法调用它。

  protected IQueryable method ()
    {

        var v = (from a in BAS1
                 join b in BAS2 on a.TIP equals b.TIP 
                 join c in BAS3 on a.COM equals c.COM 
                 join d in BAS4 on c.PROV equals d.PROV 
                 join e in BAS5 on d.ID_REG equals e.ID_REG

                 select new
                 {
                     a.ID,
                     b.SIG,
                     e.ID_REG,

                 });

        return v.ToString();
    }

通过这种方法,我想获取 linq 并对其进行过滤,但它在 v = v.Where(x => ....

中显示错误
 public ActionResult method2() {

        var v = method ();
        var id = Request.QueryString["id"];
        var filter_sig = Request.QueryString["filter_sig"];
        var filter_reg = Request.QueryString["filter_reg"];
if (filter_sig!= "")
        {
            decimal dfiltesig = decimal.Parse(filter_sig);
            v = v.Where(x => x.SIG==dfiltesig );
        }

if (id!= "")
        {
            v = v.Where(x => x.ID.ToLower().Contains(id.ToLower()));
        }

if (filter_reg!= "")
        {
            v = v.Where(x => x.ID_REG.ToLower().Contains(filter_reg.ToLower()));
        }}

【问题讨论】:

    标签: c# .net linq visual-studio-2010


    【解决方案1】:

    从您的返回语句 return v.ToString(); 中删除该 ToString() 调用,而只返回查询语句

    return v;
    

    【讨论】:

    • 试试看还是报错。它说“无法将 lambda 表达式转换为类型‘字符串’,因为它不是委托类型”
    【解决方案2】:
    public class MyThing {
       public string ID {get;set;}
       public string ID_REG {get;set;}
       public decimal SIG {get;set;}
    }
    
    protected IQueryable<MyThing> method()
    {
        return (from a in BAS1
                 join b in BAS2 on a.TIP equals b.TIP 
                 join c in BAS3 on a.COM equals c.COM 
                 join d in BAS4 on c.PROV equals d.PROV 
                 join e in BAS5 on d.ID_REG equals e.ID_REG
    
                 select new MyThing
                 {
                     a.ID,
                     b.SIG,
                     e.ID_REG,
                 });
    }
    

    【讨论】:

    • 我不能这样做,因为我在 Models 文件夹中拥有的属性,而我正在从 Controller 文件夹中执行此操作
    • 你不能做什么?
    • 我是用 MVC 做的吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 2014-12-18
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 2011-07-05
    相关资源
    最近更新 更多