我有一个现有的类Image,在我的应用程序中广泛使用。 我需要将一个通用的图像列表(List)返回到前端,但由于3ed方DB中没有存储过程,我正在查询,我需要使用Linq to Sql。
我在DAL中创建了一个我正在查询的数据库的dbtm文件,如下所示:
ImageCat
ImageId
Name
Width
DateModified
Height
CatId
My 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循环到Sql结果来设置我的List。有没有更简单的方法。什么是最佳做法?我不喜欢将我的dbml类暴露给表示层。
答案 0 :(得分:5)
您可以直接在LINQ查询中选择Image
类
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();
答案 1 :(得分:0)
你可以这样做:
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();
答案 2 :(得分:-1)
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();
我认为沿着这些线的某些东西会给你一个填充了Image对象的IEnumerable。我在编辑窗口中写道,所以我可能会离开。尝试一下,让我知道它是否适合你。