2017-04-30 1 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(); 
    } 

그리고 I는 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; 
+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

관련 문제