Конвертировать модель linq в общий список - PullRequest
3 голосов
/ 12 октября 2010

У меня есть существующий класс Image, который широко используется в моем приложении.Мне нужно вернуть общий список изображений (List) во внешний интерфейс, но, поскольку в БД 3-й стороны нет хранимого процесса, который я запрашиваю, мне нужно использовать Linq to Sql.

Я создал файл dbtmбазы данных, которую я запрашиваю в моем DAL, который выглядит следующим образом:

ImageCat
    ImageId
    Name
    Width
    DateModified
    Height
    CatId

Мой класс Image выглядит следующим образом

public class Image
{
 public int Id { get; set; }
 public string Name { get; set; }
 public int Width { get; set; }
 public int Height { get; set; }
}

Мой Linq to Sql выглядит следующим образом:

var imageList = (from ic in db.ImageCats
   where ic.CatID.Contains(category)
 select ic).ToList();

var finalImageList = new List<Image>();
foreach (ImageCat ic in imageList)
{
 Image image = new Image();
 image.Id= ic.ImageID;
 image.Height = (int)ic.Height;
 image.Name = ic.Name;
 image.Width = (int)ic.Width;

 finalImageList.Add(image);   
}

Я не хочу перебирать результаты linq to Sql, чтобы настроить мой список.Есть ли более простой способ.Что такое лучшая практика?Мне не нравится идея выставлять мои dbml классы на уровне представления.

Ответы [ 3 ]

5 голосов
/ 12 октября 2010

Вы можете выбрать непосредственно вам Image класс в запросе LINQ

var imageList = (
    from ic in db.ImageCats
    where ic.CatID.Contains(category)
    select new Image()
    {
         Id= ic.ImageID,
         Height = (int)ic.Height,
         Name = ic.Name,
         Width = (int)ic.Width,
    }
).ToList();
0 голосов
/ 12 октября 2010
IEnumerable<Image> = from ic in db.ImageCats
                     where ic.CatID.Contains(category)
                     select new Image() { Id= ic.ImageID, Height = (int)ic.Height, Name = ic.Name, Width = (int)ic.Width }.ToList();

Я думаю, что что-то в этом духе даст вам IEnumerable, заполненный объектами Image. Я написал это в окне редактирования, чтобы я мог быть далеко, хотя. Попробуйте и дайте мне знать, сработало ли это для вас.

0 голосов
/ 12 октября 2010

Вы можете сделать это так:

var imageList = db.ImageCats.Where(ic => ic.CatID.Contains(category))
.Select(ic => new Image{ Id = ic.ImageID, 
                         Height = (int)ic.Height, 
                         Name = ic.Name, 
                         Width = (int)ic.Width})
.ToList(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...