2016-08-22 7 views
0

私がしようとしていることに対する答えを見つけることができないようです。MVCとC#とWeb APIを使用したSQlクエリの理解の問題

2つの列としてVisitIndexとTypeIndexを持つテーブルを持つSQLデータベース。私はそれにMVCエンティティコントローラを接続しています。したがって、Web APIコントローラでは、そのvisitindex(そのキー)でレコードを取得するためにGetVisitを使用していますが、GetVisit2はそうではありません。何かが見つからないためコンパイルされません。その行はVisit v = dbで始まります。クエリでは、両方のIDが指定されているレコードが必要であることは明らかです。私は間違った方法でそれについて行くかもしれない?

// GET: api/Visits/5 
    [ResponseType(typeof(Visit))] 
    public IHttpActionResult GetVisit(int id) 
    { 
     Visit visit = db.Visits.Find(id); 
     if (visit == null) 
     { 
      return NotFound(); 
     } 

     return Ok(visit); 
    } 
    // GET: api/Visits/id/typeindex is what i want (or similar) 
    [ResponseType(typeof(Visit))] 
    public IHttpActionResult GetVisit2(int id, int typeIndex) 
    { 
     Visit v = db.Visits.Where(f => f.VisitIndex == id && f => f.TypeIndex == typeIndex).SelectMany(f => f.Visit); //.Select(f => f.TypeIndex == id); //.ToList(); 
     if (v == null) 
     { 
      return NotFound(); 
     } 

     return Ok(v); 
    } 
+1

' .Where(F => f.VisitIndex ==番号&& f.TypeIndex == typeIndex):このようなコードを変更 –

答えて

0

「訪問」オブジェクトは1つだけ必要です。また、オフの場合はLINQ syxtaxです。 「VisitIndex」と「TypeIndex」の組み合わせは、私が想定していないユニークである場合

Visit v = db.Visits.FirstOrDefault(f => f.VisitIndex == id && f.TypeIndex == typeIndex); 

:だから、このような何かを試してみてください。 `

List<Visit> v = db.Visits.Where(f => f.VisitIndex == id && f.TypeIndex == typeIndex); 
関連する問題