2015-02-19 3 views
0
SELECT PropertyCommnets.commnet_content, 
     PropertyCommnets.commnet_date, 
     users.user_name, 
     propertycommnets.commnet_id 
FROM PropertyCommnets 
     INNER JOIN aspnet_users 
       ON propertycommnets.userid = aspnet_users.userid 
     INNER JOIN users 
       ON aspnet_users.userid = users.userid 

я это написал, но is't правильно:Как написать этот запрос с помощью лямбда-выражения Linq

from a in context.PropertyCommnets 
join b in context.aspnet_Users 
on a.UserId equals b.UserId 
join c in context.Users 
on b.UserId equals c.UserId 
where a.property_id == PropertyId 
select(c.user_name).FirstOrDefault() 
+0

_ «Я написал это, но не правильно» _ Извините? –

ответ

0

Я не понимаю, что вы пытаетесь с помощью своего select в конце. Это недопустимый синтаксис, и FirstOrDefault также неверен по сравнению с вашим SQL-запросом.

Попробуйте это:

from a in context.PropertyCommnets 
join b in context.aspnet_Users 
on a.UserId equals b.UserId 
join c in context.Users 
on b.UserId equals c.UserId 
where a.property_id == PropertyId 
select new { 
    commnet_content = a.commnet_content, 
    commnet_date = a.commnet_date, 
    user_name = c.user_name, 
    commnet_id = a.commnet_id, 
}; 

Однако, это по-прежнему запрашивать синтаксис не синтаксис метода/лямбда. Это имеет значение? С синтаксисом запросов соединений гораздо читабельнее.

0

а) Есть ли конкретная причина, почему вы присоединитесь на aspnet_users? Вы не используете aspnet_users.userid

b) Ваша попытка Linq SQL не является выражением Lambda.

c) У вас есть виртуальная коллекция propertycommnets в вашей модели пользователя? Если бы я не подумал об этом. Затем вы можете просто вызвать user.propertycommnets и комментарии этого конкретного пользователя.

Смежные вопросы