FoadJesus
FoadJesus

Reputation: 27

LINQ and Lambda, query based on an array

I have this model and I want to write a where clause that query specific results based on and array, for example I want to show only the song that has an id in the array [1, 3, 7, 8]: I wrote the expression below but I don't know how to write the where statement:

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
                        };

Upvotes: 0

Views: 145

Answers (1)

Hamlet Hakobyan
Hamlet Hakobyan

Reputation: 33381

Try this:

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

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

Upvotes: 2

Related Questions