Выборка данных по ID пользователя

Дата: 18.06.2010
Категории: ASP.NET Visual Studio (C#)

Я постарался назвать пост так, чтобы его было проще найти тем у кого возникла аналогичная проблема. Не знаю, получилось или нет…

Имеется таблица Urls, в которой располагаются различные данные данные, и эта таблица связана с таблицей aspnet_Users, по полю id_user. Я использовал инфраструктуру ASP.NET для управления пользователями (поэтому и присутствует таблица aspnet_Users), т.е. все необходимые таблицы были созданы автоматически утилитой C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe.

В таблице  aspnet_Users имеется поле UserId (с ним собственно и связывали таблицы) типа uniqueidentifier.

LINQ Модель

Затем была создана объектная модель посредством технологии LINQ. И id_user в ней был типа Guid (то есть глобальный идентификатор пользователя).

Возникла задача, выводить данные из таблицы Urls, но не все а только которые относятся к вошедшему («залогинившемуся») пользователю. Надеюсь идея понятна.

Реализация

Я создал метод который работает с созданной Linq моделью — DCDataContext. По задумке функция и будет возвращать только данные связанные с пользователем.

DCDataContext _dataContext;

public IEnumerable<Url> GetUrls(Guid id)
{
   IEnumerable<Url> obj = _dataContext.Urls.OrderBy(t => t.id_user == id);
   return obj;
}

Тут все достаточно просто. И так как было написано t.id_user == id, то логично, что данные должны быть те которые я и ожидал. НО у меня выводились все данные. Я все перепроверил, вроде бы все верно.

Решение

В итоге я решил эту проблему, и код стал такой:

DCDataContext _dataContext;

public IEnumerable<Url> GetUrls(Guid id)
{
   IEnumerable<Url> obj = _dataContext.Urls.OrderBy(t => t.id_user);
   obj = obj.Where(i => i.id_user == id);
   return obj;
}

Почему не работал тот код, я не пойму. Если кто знает, объясните…

Коментарии:

  1. 28.01.2011 в 17:01

    Спасибо!! Как раз то что мне нужно было!!!

  2. 26.02.2016 в 15:12

    Мне благоприятель посоветовал брать чтобы моего сайта вдс. Не дорого и побольше оперативы, минимум через 2GB. Чтобы принимали оплату карточкой. Сколько можите посоветовать?