2014-01-05 4 views
0

Я хочу использовать оператор IN в LINQ. У меня есть SQL-запрос, как указано ниже. Как включить критерии.Как использовать оператор SQL IN в LINQ

SQL Query

SELECT  ServiceId, ServiceName, Rate 
FROM   Service 
WHERE  (ServiceId IN (1, 2, 3, 4)) 

LINQ

string serviceId = "(1,2,3,4,5,6)"; 

try 
{ 
    using (var context = new DBEntities()) 
    { 
     var query = (from c in context.Service 
        where c.ServiceId == serviceIds  //ServiceId is the primary key 
        select new 
        { 
         serviceId = c.ServiceId, 
         serviceName = c.ServiceName, 
         rate = c.Rate 

        }).ToList(); 

     GridView1.DataSource = query.ToList(); 
     GridView1.DataBind(); 

    } 
} 
catch (Exception ex) 
{ 
    throw ex; 
} 
+0

Используйте коллекцию и метод '.Contains()'. –

ответ

3

Вы можете использовать содержит списка, сделать serviceId список или массив

var serviceIds = new int[] { 1, 2, 3, 4, 5, 6 }; 

try 
{ 
    using (var context = new DBEntities()) 
    { 
     var query = (from c in context.Service 
         where serviceIds.Contains(c.ServiceId)  //ServiceId is the primary key 
         select new 
         { 
          serviceId = c.ServiceId, 
          serviceName = c.ServiceName, 
          rate = c.Rate 

         }).ToList(); 

     GridView1.DataSource = query.ToList(); 
     GridView1.DataBind(); 

    } 
} 
catch (Exception ex) 
{ 
    throw ex; 
} 
+0

Спасибо @MichaC. Я получил сообщение об ошибке «Ошибка « string [] »не содержит определения для« Содержит »и лучший метод перегрузки» System.Linq.Queryable.Contains (System.Linq.IQueryable , TSource) 'имеет некоторые недопустимые аргументы " – Jaan

+0

Еще раз спасибо @MichaC за ваше драгоценное время. – Jaan

1

Я предпочитаю использовать Any, могут быть некоторые проблемы при использовании содержит.

var serviceIds = new int [] {1, 2, 3, 4, 5, 6};

try 
{ 
    using (var context = new DBEntities()) 
    { 
     var query = (from c in context.Service 
         where serviceIds.Any(t=> t.ID == c.ServiceId) 
         select new 
         { 
          serviceId = c.ServiceId, 
          serviceName = c.ServiceName, 
          rate = c.Rate 

         }).ToList(); 

     GridView1.DataSource = query.ToList(); 
     GridView1.DataBind(); 

    } 
} 
catch (Exception ex) 
{ 
    throw ex; 
} 
Смежные вопросы