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

試してもエラーが表示されます。それは "ラムダ式をデリゲート型ではないため 'string'型に変換することはできません" – 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

私はモデルフォルダにある属性とコントローラフォルダから行っている属性のためにできません – Ale

+0

あなたは、何をする? –

+0

MVCでこれをやっているのですか? – Ale

関連する問題