Возьми это:
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)
);
}
Все идентификаторы Nullable<long>
.
ИЗМЕНИТЬ:
Профилировщик SQL:
SELECT *
FROM [dbo].[CampaignSchedulePlacements] AS [Extent5]
WHERE ([Extent5].[MediaCategoryFormatID] = [Extent5].[MediaCategoryFormatID]) AND ([Extent5].[MediaCategorySizeID] = [Extent5].[MediaCategorySizeID])
Примечание: очищен файл `SQL.
SomeItem1
? У него есть перегруженный оператор==
? - person Ry-♦   schedule 21.07.2012list
? Используете ли вы Linq-To-Objects или что-тоIQueryable
? - person CodesInChaos   schedule 21.07.2012EntityObject
. Я просто не могу понять это... - person Willem   schedule 21.07.2012NULL = NULL
оценивается как неизвестное, а не как ложное. Это важно, потому чтоNOT(NULL = NULL)
не (неизвестно) (это еще неизвестно), не не (ложно) (это правда) - person   schedule 21.07.2012