C# 在LINQ ASP.NET中引用嵌套lambda表达式中的参数时出错

C# 在LINQ ASP.NET中引用嵌套lambda表达式中的参数时出错,c#,asp.net,linq,visual-studio-2012,lambda,C#,Asp.net,Linq,Visual Studio 2012,Lambda,由于某些原因,我在Microsoft Visual Studio 2012中遇到以下代码错误: students.Where(s => foreignStudents.Any(f => s.FirstName == f.FirstName && s.LastName == f.LastName ) ); student是一个具有各种属性(包括名字和姓氏)的学生列表,foreignStudents是一个仅包含学生

由于某些原因,我在Microsoft Visual Studio 2012中遇到以下代码错误:

students.Where(s => 
    foreignStudents.Any(f => 
        s.FirstName == f.FirstName && 
        s.LastName  == f.LastName
    )
);
student是一个具有各种属性(包括名字和姓氏)的学生列表,foreignStudents是一个仅包含学生名字和姓氏的列表。我已经更改了变量名,以便更容易理解问题

它表示IEnumerable不包含“Any”的定义,并且最佳扩展方法重载Enumerable。AnyIEnumerable,Func有一些无效参数

将其切换为f=>true或f=>f.FirstName==Sarah将删除错误

任何见解都将不胜感激

编辑:实际代码

// Retreives orders from the database using parameters from the URL
string orderQuery = "SELECT * FROM EventOrders WHERE EventID = @0 AND AccountNum = @1";
var orders = db.Query(orderQuery, Request.Form["id"], Request.Form["accountnum"]);

// Parses order IDs from the URL
// Where Order IDs are in the form: <orderNum>-<orderLine>[,...]
var orderIDs = Request.QueryString["orderids"].Split(',')
    .Select(orderID => {
        var components = orderID.Split('-');
        return new { 
            OrderNum  = components[0].AsInt(), 
            OrderLine = components[1].AsInt() 
        };
    });

var quantityList = orders
    .Where(o => orderIDs.Any(i => o.OrderNum == i.OrderNum && o.OrderLine ==             i.OrderLine))
    .OrderByDescending(o => o.Quantity)
    .Select(o => new { o.OrderNum, o.OrderLine, o.Quantity })
编辑2:
所以我认为这可能是VisualStudio现在的一个问题。在调试完其余的代码后,它似乎可以正常工作。VisualStudio仍然用红色下划线表示错误。

您真正想要做的是加入。通过连接两个表,您可以在一个表中找到另一个表中存在的所有学生。这也是一个比您描述的搜索每个项目的整个数据集更有效的操作。如果知道您正在进行连接,则可以对其进行大量优化

var query = from student in students
            join foreignStudent in foreignStudents
                on new { student.FirstName, student.LastName }
                equals new { foreignStudent.FirstName, foreignStudent.LastName }
                into joinedStudents
            where joinedStudents.Count() > 0
            select student;

实际代码请…尝试在条件周围添加括号。当我们需要复制、粘贴并查看自己的错误时,它会帮助我们。这是偶然的linq到sql吗?我复制了您的代码,并为学生和外国学生收集了代码,我没有收到错误