2009-06-29 5 views
1

Я знаю, что LINQ не имеет предложения SQL IN, а использует «contains». Могу ли я использовать это на LinqDataSource? Я хочу написать простой запрос, равный этому: SELECT * FROM tableA WHERE tableA.requestType NOT IN (5,6,7,8) И tableA.someBitField IS NULL.Справка по запросу LinqDataSource

Возможно ли использование LinqDataSource из коробки? Спасибо за любые указатели.

Cheers, ~ ск в Сан-Диего

ответ

3

Да, вполне возможно. Просто обработайте событие Selecting на источнике данных. На странице класса LinqDataSoruce на MSDN содержится отличный пример. Изменение:

public partial class Default3 : System.Web.UI.Page 
{ 
    int[] validRequestTypes = { 5, 6, 7, 8 }; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    protected void LinqDataSource_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
    { 
     using(var dc = new MyDataContext()) 
     { 
      var qry = from item in dc.tableAs 
         where validRequestTypes.contains(item.requestType) 
         && item.someBitField == null 
         select item; 
      e.Result = qry; 
     } 
    } 
} 
+1

Большое спасибо! – Hcabnettek

+0

Мы здесь, чтобы помочь! :) – Randolpho