Невозможно получить значения с помощью лямбда-выражения - PullRequest
2 голосов
/ 24 августа 2011

Моя проблема в том, что я хочу принять значение сущностей Результата Linq. Ниже мой метод

Мой метод Datalayer:

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. Теперь я возвращаю результат в слой пользовательского интерфейса, используя метод ниже:

   public static IQueryable AuthenticateUser(User user)
        {
            var db = new MeriRanchiDataContext();
            return MeriRanchiQueries.AuthenticateUser(db, user.UserName, user.Password);
        }

На моем уровне пользовательского интерфейса мне нужны значения, хранящиеся в сущностях: MemberId, Email, Name, чтобы я мог установить его для сеанса. ТАК, что будет выражением для этого.

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

Возвращает универсальный IQueryable<AuthenticateUserResult> вместо неуниверсального IQueryable.

0 голосов
/ 24 августа 2011

Привет. Я отвечаю на свой вопрос, когда я нашел его решение, и думаю, что это может помочь другим людям, сталкивающимся с той же проблемой.

Что я сделал?

  1. Я возвращаю обратно тип возврата к IQueryable<AuthenticateUserResult>
  2. Добавлено SingleOrDefault () в качестве расширения.
  3. Использовал код ниже

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...