C# 如何使用方法语法重写这一行?
我与SMO合作,我有一行代码:C# 如何使用方法语法重写这一行?,c#,linq,C#,Linq,我与SMO合作,我有一行代码: var results = (from User user in database.Users where user.LoginType == LoginType.WindowsUser select new { user.Name, user.Login }).ToList(); 但无论出于何种原因,我不能这样写查询: var results = database.Users .Where(user => us
var results = (from User user in database.Users
where user.LoginType == LoginType.WindowsUser
select new { user.Name, user.Login }).ToList();
但无论出于何种原因,我不能这样写查询:
var results = database.Users
.Where(user => user.LoginType == LoginType.WindowsUser)
.Select(user => new { Name = user.Name, Login = user.Login })
.ToList();
我得到的错误是,“UserCollection”不包含“Where”的定义,并且找不到接受“UserCollection”类型的第一个参数的扩展方法“Where”(是否缺少using指令或程序集引用?
但就我所见,这两种说法是相同的
为什么会发生这种情况?不,它们有点不同。因为这里有一个显式类型的范围变量:
from User user in database.Users
您的查询相当于:
var results = database.Users
.Cast<User>();
.Where(user => user.LoginType == LoginType.WindowsUser)
.Select(user => new { user.Name, user.Login })
.ToList();
你是否有
使用System.Linq代码>在文件的顶部Where
和Select
是扩展方法。@BrianRogers:这对于查询表达式表单也是失败的-编写查询表达式不会隐式导入任何名称空间。是的。否则我就不能使用查询语法。我发现错误找不到源类型“UserCollection”的查询模式的实现找不到Cast。您是否缺少对“System.Core.dll”的引用或“System.Linq”的using指令?
// This will fail
var results = (from user in database.Users
where user.LoginType == LoginType.WindowsUser
select new { user.Name, user.Login }).ToList();