Вопрос LINQ - Как сделать где! = Значение - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть таблица «Друзья» с идентификатором зарегистрированного пользователя и идентификаторами его / ее друга.

Результат, который я получаю с этим запросом SQL

SELECT u.ID, u.Nickname 
FROM UserSet as u, FriendsSet as f
WHERE u.ID=f.FriendID
ORDER BY u.Nickname

Есть

| ID | Nickname |
-----------------
| 16 | rugardini|
| 17 |   Teste  |

«rugardini» - мой текущий пользователь, это происходит потому, что в дружеских отношениях «Teste» - мой друг, и я тоже его друг, но в моем списке друзей я не хочу, чтобы появился мой собственный пользователь.

Итак, я выполнил следующий запрос, исключая мой собственный идентификатор (16)

SELECT u.ID, u.Nickname 
FROM UserSet as u, FriendsSet as f
WHERE u.ID=f.FriendID and u.ID != 16
ORDER BY u.Nickname

У меня есть 2 вопроса:

1) Это лучший способ сделать этот выбор? 2) Как преобразовать этот SQL-запрос в LINQ?

Ответы [ 2 ]

3 голосов
/ 13 сентября 2011

около 2): linq для вашего второго запроса должен выглядеть следующим образом:

from u in db.UserSet, f in db.FieldsSet
where u.ID=f.FriendID && u.ID != 16
orderby u.Nickname
select u.ID, u.Nickname 
0 голосов
/ 13 сентября 2011

Я мог выполнить свой запрос только так:

var friends = (from u in db.UserSets
               join f in db.FriendsSets
               on u.ID equals f.FriendID
               where u.ID != userID
               orderby u.Nickname
               select new Friends { ID = u.ID, Nickname = u.Nickname }).ToList();

С классом в моем контроллере, как это:

public class Friends
{
    public int ID;
    public string Nickname;
}

И цикл, на мой взгляд, выглядит так:

<ul>
@foreach (dynamic item in ViewBag.Friends)
{
    <li>@item.Nickname @Html.ActionLink("Amigo", "Index", new { id = item.ID })</li>
}
</ul>

Спасибо за всех, кто ответил на мой вопрос =)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...