【发布时间】:2012-07-21 17:18:58
【问题描述】:
拿着这个:
int? item1 = null;
int? item2 = null;
someObjectList.Where(x => x.SomeItem1 == (item1 ?? x.SomeItem1)
&& x.SomeItem2 == (item2 ?? x.SomeItem2)
);
其中someObjectList 不为空且SomeItem1 和SomeItem2 在列表中的所有对象中为null。
为什么什么都不返回?
编辑:
我的代码:
public void GetPlacementsByMaterial(long clientMaterialID)
{
ClientMaterial clientMaterial = ((ApplicationEntityModel)NavigationItem.ObjectContext).ClientMaterial.FirstOrDefault(x => x.ClientMaterialID == clientMaterialID);
var list = GetPlacementList(supplier, mediaSpace);
PlacementsList = list.Where(x => x.MediaCategoryFormatID == (clientMaterial.MediaCategoryFormatID ?? x.MediaCategoryFormatID)
&& x.MediaCategorySizeID == (clientMaterial.MediaCategorySizeID ?? x.MediaCategorySizeID)
);
}
所有 ID 均为 Nullable<long>。
编辑:
SQL 探查器:
SELECT *
FROM [dbo].[CampaignSchedulePlacements] AS [Extent5]
WHERE ([Extent5].[MediaCategoryFormatID] = [Extent5].[MediaCategoryFormatID]) AND ([Extent5].[MediaCategorySizeID] = [Extent5].[MediaCategorySizeID])
注意:清理了`SQL。
【问题讨论】:
-
请发布重现问题的完整示例。
-
它对我来说很好用。
SomeItem1的类型是什么?它是否有一个重载的==运算符? -
list的类型是什么?你使用的是 Linq-To-Objects,还是一些IQueryable的东西? -
@CodesInChaos 使用 Linq-to-entities,这都是基本查询。没有什么花哨。所有对象都是
EntityObject类型。我只是似乎无法解决... -
您正在使用 Linq to Entities。查看使用调试器(例如在 Intellitrace 中)生成的实际 SQL。
标签: c# .net linq linq-to-entities entity-framework-4.3