从方法返回多个值的正确方法

kam*_*eet 0 c# linq entity-framework

我正在使用 LINQ 查询获取 userID 和 userRole,并将它们返回。我想知道如何在返回数据后读取每个值。这是代码。

public object[] GetUserInfoFromUsernameAndPassword(string userName, string password)
{
  var userInfo = from u in STE.tblUsers
  where u.UserName == userName
  && u.PWD == password
  select new
  {
    u.UserID,
    u.UserRole
  };

  return userInfo.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

这是一个很好的方法吗?如果有人知道更好的方法,请分享..

谢谢

tak*_*gen 5

这段代码:

select new
{
  u.UserID,
  u.UserRole
};
Run Code Online (Sandbox Code Playgroud)

创建一个只能在GetUserInfoFromUsernameAndPassword方法内部使用的匿名类。所以稍后要使用返回值,您需要创建一些类并返回此类的对象集合:

public class UserInfo
{
    public int Id{get; set;}

    public string Role{get; set;}
}
Run Code Online (Sandbox Code Playgroud)

然后你需要修复你的查询:

var userInfo = from u in STE.tblUsers
    where u.UserName == userName
    && u.PWD == password
    select new UserInfo
    {
        Id = u.UserID,
        Role = u.UserRole
    };
Run Code Online (Sandbox Code Playgroud)

最后一件事是更改方法的返回类型:

public UserInfo[] GetUserInfoFromUsernameAndPassword(string userName, string password)
Run Code Online (Sandbox Code Playgroud)

之后,您将能够使用foreach例如遍历集合:

var users = GetUserInfoFromUsernameAndPassword("username", "password");

foreach(var user in users)
{
    Console.WriteLine("{0} - {1}", user.Id, user.Role);
}
Run Code Online (Sandbox Code Playgroud)