views:

24

answers:

2

I have a list of ID values:

List<int> MyIDs { get; set; }

I'd like to pass this list to an interface to my repository and have it return a List that match the ID values I pass in.

List<MyType> myTypes = new List<MyType>();

IMyRepository myRepos = new SqlMyRepository();

myTypes = myRepos.GetMyTypes(this.MyIDs);

Currently, GetMyTypes() behaves similarly to this:

public MyType GetMyTypes(int id)
{
    return (from myType in db.MyTypes
            where myType.Id == id
            select new MyType
            {
                MyValue = myType.MyValue
            }).FirstOrDefault();
}

where I iterate through MyIDs and pass each id in and add each result to a list.

How do I need to change the LINQ so that I can pass in the full list of MyIDs and get a list of MyTypes out? GetMyTypes() would have a signature similar to

public List<MyType> GetMyTypes(List<int> myIds)
+1  A: 

Untested

public List<MyType> GetMyTypes(List<int> myIds) {
  var x = from myType in db.MyTypes
          where myIds.contains(myType.Id)
          select new MyType {
            MyValue = mytype.Myvalue
          };
return x.ToList();
}
Raj Kaimal
A: 
public List<MyType> GetMyTypes(List<int> ids)
{
return (from myType in db.MyTypes
        where ids.Contains(myType.Id)
        select new MyType
        {
            MyValue = myType.MyValue
        }).ToList();
}
zerkms