我如何从另一种方法调用 linq?

Posted

技术标签:

【中文标题】我如何从另一种方法调用 linq?【英文标题】:How can i call from another method a 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()));
        

【问题讨论】:

【参考方案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 做的吗

以上是关于我如何从另一种方法调用 linq?的主要内容,如果未能解决你的问题,请参考以下文章

如何在一种方法中为数组赋值并从另一种方法调用

为啥不能从另一种方法调用main方法[关闭]

我如何以编程方式从另一种方法单击 JavaFX 中的按钮?

如何从另一种形式调用公共函数

如何从另一种方法访问 StorageFile

如何从另一种方法访问 tableviewCell 中的文本字段