-3

我想为 List 类编写一个扩展方法,就像 List 类的 Contains 方法一样,它接受一个可以为空的对象。有人可以帮我解决这个问题吗?

4

1 回答 1

1

从您对另一个答案的评论来看,您似乎正在尝试做类似的事情

var myWantedIds = new List<int> { 1, 2, 3 };
var matchingItems = myEntityFrameworkItems
    .Where(efItem => myWantedIds.Contains(efItem.NullableIdProperty));

在这里编写一个重载Contains将无济于事,因为它不能被翻译成 SQL。

要尝试的一件事是检查列表是否包含非空 ID:

var myWantedIds = new List<int> { 1, 2, 3 };
var matchingItems = myEntityFrameworkItems
    .Where(efItem => efItem.NullableIdProperty.HasValue &&
                     myWantedIds.Contains(efItem.NullableIdProperty.Value));

如果这也不能翻译,您还可以尝试将搜索列表转换为可为空的版本:

var myWantedIds = new List<int> { 1, 2, 3 };
var myNullableIds = myWantedIds.Select(i => new int?(i)).ToList();
var matchingItems = myEntityFrameworkItems
    .Where(efItem => myNullableIds.Contains(efItem.NullableIdProperty));
于 2013-06-11T11:17:28.680 回答