Подвыбор Linq

Если вы недавно установили или обновили пакет Microsoft.CodeDom.Providers.DotNetCompilerPlatform, дважды проверьте, что версии этого пакета, на которые ссылается ваш проект, указывают на правильную и ту же версию этого пакета:

  • В ProjectName.csproj убедитесь, что присутствует тэг <Import> для Microsoft.CodeDom.Providers.DotNetCompilerPlatform и указывает на правильную версию.
  • В ProjectName.csproj убедитесь, что тег <Reference> для Microsoft.CodeDom.Providers.DotNetCompilerPlatform присутствует и указывает на правильную версию, как в атрибуте Include, так и на потомке <HintPath>.
  • В этом web.config проекта убедитесь, что присутствует тэг <system.codedom>, и что его дочерние <compiler> теги имеют одну и ту же версию в свой атрибут type.

По какой-то причине в моем случае обновление этого пакета с 1.0.5 до 1.0.8 вызвало <Reference> в .csproj, чтобы его Include указывал на старую версию 1.0.5.0 (которую я удалил после обновления пакета), но все остальное указывало на новую и правильную версию 1.0.8.0.

15
задан Marc Gravell 9 February 2009 в 11:50
поделиться

3 ответа

Как насчет:

var res = from c in customers 
          where !orders.Select(o => o.CustomerID).Contains(c.CustomerID)
          select c;

Другая опция состоит в том, чтобы использовать:

var res = from c in customers
          join o in orders 
               on c.CustomerID equals o.customerID 
               into customerOrders
          where customerOrders.Count() == 0
          select c;

Вы использующий LINQ для SQL или чего-то еще, btw? Различные ароматы могут иметь различные "лучшие" способы сделать его

24
ответ дан 1 December 2019 в 02:29
поделиться
var  res = (from c in orders where c.CustomerID == null
               select c.Customers).ToList();

или делают кроме ()

-2
ответ дан 1 December 2019 в 02:29
поделиться

Если это поддерживается базой данных, попытайтесь использовать свойства навигации (если Вам определили их):

var res = from c in customers
          where !c.Orders.Any()
          select c;

На Northwind, это генерирует TSQL:

SELECT /* columns snipped */
FROM [dbo].[Customers] AS [t0]
WHERE NOT (EXISTS(
    SELECT NULL AS [EMPTY]
    FROM [dbo].[Orders] AS [t1]
    WHERE [t1].[CustomerID] = [t0].[CustomerID]
    ))

, Который делает задание вполне хорошо.

7
ответ дан 1 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: