2016-01-12 48 views
0

我有這個模型,我想寫一個where子句,查詢基於和數組的特定結果,例如我想只顯示在數組中有一個id的歌曲[ 1,3,7,8]: 我寫了下面的表達,但我不知道怎麼寫的,其中聲明:LINQ和lambda,查詢基於數組

var model = from c in _db.Categories 
       from co in _db.Composers 
       from k in _db.Keys 
       from p in _db.Poets 
       from si in _db.Singers 
       from t in _db.Types 
       join s in _db.Songs on 
        new 
        { 
         Catid = c.id, 
         Comid = co.id, 
         Keyid = k.id, 
         Poetid = p.id, 
         Singerid = si.id, 
         Typeid = t.id 
        } 
        equals 
        new 
        { 
         Catid = s.CategoryId, 
         Comid = s.ComposerId, 
         Keyid = s.KeymId, 
         Poetid = s.PoetId, 
         Singerid = s.SingerId, 
         Typeid = s.TypeId 
        } 
       where 
         ............ 
         select new SongViewModel 
         { 
          id = s.id, 
          Name = s.Name, 
          Lyric = s.Lyric, 
          Chord = s.Chord, 
          Note = s.Note, 
          Audio = s.Audio, 
          Lycho = s.Lycho, 
          Likes = s.Likes, 
          Dislikes = s.Dislikes, 
          Category = c.Name, 
          Composer = co.Name, 
          Keym = k.Name, 
          Poet = p.Name, 
          Singer = si.Name, 
          Type = t.Name 
         }; 
+1

這是一個很長的查詢,細節上你的問題很短。你認爲你可以創建一個簡短但完整的例子:*不需要那麼多的連接,或者那個龐大的實體?我希望在20行左右有一個簡短但完整的例子。 –

回答

2

試試這個:

var ids = new List<int> {1,3,7,8}; 

    ... 
where ids.Contains(s.Id) 
select 
    ...