2017-04-30 20 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

相關問題