不包含'where'的定义和最佳扩展方法重载

时间:2013-08-12 15:02:23

标签: linq entity-framework linq-to-entities

我在stackoverflow论坛上搜索过并发现了这个错误,但每次都有不同的含义,我希望有人帮助我解决这个问题。

public IEnumerable<Project> FindRange(string filterExpression, string sortingExpression, int startIndex, int count)
{
    try
    {
        using (BusinessContext context = new BusinessContext())
        {
            if (!String.IsNullOrWhiteSpace(filterExpression))
                 return context.Projects
                               .Where(filterExpression)

最后一行是错误之一...

你知道为什么会这样吗?我已经添加了所需的所有使用和dll:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;

我错过了什么?我的代码结构相同,工作......

3 个答案:

答案 0 :(得分:4)

您的filterexpression参数不应该是string - 它应该是Func<>

请参阅http://msdn.microsoft.com/en-us/library/system.linq.enumerable.where(v=vs.100).aspx

答案 1 :(得分:1)

看起来您可能正在尝试使用Dynamic Linq库。在这种情况下,您需要确保added the NuGet package to your project然后包含此命名空间:

using System.Linq.Dynamic;

答案 2 :(得分:1)

如果你的BusinessContext类有一个字符串属性,比如你想要过滤的名字,那么你的where表达式应该类似于

.Where(x => x.Name.ToLower().StartsWith(filterExpression.ToLower()))