我的问题是我想获取Linq结果的实体价值。以下是我的方法
我的数据层方法:
private static readonly Func<DataContext, String, String, IQueryable<AuthenticateUserResult> > AuthenticateUser__impl= CompiledQuery.Compile((DataContext context, String username, String password) =>
( from u in context.GetTable<Yantriki.MeriRanchi.Web.UI.Core.User>()
where ((u.UserName == username)
&& (u.Password == password)
&& (u.IsActive == true))
select new AuthenticateUserResult
{
MemberId = u.MemberId,
Email = u.Email,
Name = u.Name,
Role = u.Role,
UserName = u.UserName
}));
上面的代码由Visual Linq Designer生成。现在我使用以下方法将结果返回到UI层:
public static IQueryable AuthenticateUser(User user)
{
var db = new MeriRanchiDataContext();
return MeriRanchiQueries.AuthenticateUser(db, user.UserName, user.Password);
}
在我的UI层,我需要存储在实体,MemberId,Email,Name中的值,以便我可以将其设置为session。那将是什么表达。
答案 0 :(得分:2)
返回通用IQueryable<AuthenticateUserResult>
而非非通用IQueryable
。
答案 1 :(得分:0)
您好,我正在回答我自己的问题,因为我得到了解决方案,并认为这可能有助于其他人面临同样的问题。
我做了什么?
IQueryable<AuthenticateUserResult>
var userResults =
MeriRanchiDataManager.AuthenticateUser(user).SingleOrDefault();
Session["UserName"] =userResults.MemberId;
Session["Email"] = userResults.Email;
Session["Role"] = userResults.Role.ToString();
Session["MemberId"] = userResults.MemberId.ToString();
Session["Name"] = userResults.Name;