Справка по запросу LinqDataSource - PullRequest
1 голос
/ 29 июня 2009

Я знаю, что в LINQ нет предложения SQL IN, а используется слово «содержит». Могу ли я использовать это на LinqDataSource? Я хочу написать простой запрос, который эквивалентен этому: ВЫБРАТЬ * ИЗ СТОИМОСТИ А ГДЕ tableA.requestType NOT IN (5,6,7,8) И tableA.someBitField IS NULL.

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

Ура, ~ ck в Сан-Диего

1 Ответ

3 голосов
/ 29 июня 2009

Да, вполне возможно. Просто обработайте событие 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;
        }
    }
}
...