首页 > 解决方案 > EF - 查找不在整数列表中的项目 - 结果查询不使用参数

问题描述

我正在使用以下方法:

public PagedResult<PaymentPlanItems> GetPagedRequest(SearchRequest searchRequest, List<int> idsToExclude)
    {
        var list = _dbSetList.AsQueryable();
        if (idsToExclude != null)
        {
            list = list.Where(item => !idsToExclude.Contains(item.ItemId));
        }

        var query = SearchHelper.GetFilteredSearch<PaymentPlanItems>(list, searchRequest);
        var pagedResultMessage = SearchHelper.GetPagedResult(query, searchRequest);
        return pagedResultMessage;
    }

我最初使用这个的 idsToExclude (从另一个 SO 线程中找到):

if (!string.IsNullOrEmpty(searchViewModel.ItemsToExclude))
        {
            List<int> idsToExclude = new List<int>(Array.ConvertAll(searchViewModel.ItemsToExclude.Split(','), int.Parse));
            searchViewModel.Result = _paymentPlanItemsAdapter.GetPagedRequest(searchViewModel.SearchRequest, idsToExclude);
        }

然后,我使用配置文件查看生成的查询,我发现我在查询中得到以下信息:

WHERE ( NOT ([Extent1].[ItemId] IN (440, 1017))) 

我不知道我是否应该真正担心,因为我的数字直接插入查询而不是作为参数,如果我应该这样做,我应该对该方法/方法进行哪些修改以使该查询使用参数?

标签: c#entity-frameworklinqlinq-to-sql

解决方案


推荐阅读