2017-04-30 19 views
0

在这种方法中,我创建了linq。 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语句return v.ToString();删除ToString()电话,而只返回查询说

return v; 
+0

尝试它但仍显示错误。它说“不能将lambda表达式转换为类型'字符串',因为它不是委托类型” – Ale

0
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, 
      }); 
} 
+0

我不能这样做,因为我在Models文件夹中具有的属性和我在Controller文件夹 – Ale

+0

中所做的属性您可以' t做什么? –

+0

是我用MVC做的 – Ale

相关问题