c# - 将 linq 模型转换为通用列表

标签 c# linq linq-to-sql generics

我有一个现有的类 Image,它在我的整个应用程序中被广泛使用。 我需要将通用图像列表 (List) 返回到前端,但由于 3ed 方数据库中没有存储过程,我正在查询我需要使用 Linq to Sql。

我已经在我的 DAL 中创建了一个我正在查询的数据库的 dbtm 文件,它看起来像:

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 类暴露给表示层的想法。

最佳答案

您可以在 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();

关于c# - 将 linq 模型转换为通用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3914204/

相关文章:

c# - LINQ where子句疑惑

c# - 如何在 LINQ 中使用字符串进行查询

c# - 如何将字符串转换为 System.Data.Objects.ObjectQuery`1[System.String]

c# - 这如何转换为 SQL 到 LINQ?

c# - 根据通用类型参数查询不同的列

c# - 计算使用 LINQ 函数实例化的 C# 对象中的天数

C# LINQ Distinct(IEqualityComparer) 帮助

c# - 将有条件构建的 SQL where 子句转换为 LINQ

c# - 如何从 .NET 中的 x 行读取文件

c# - 获取 TextBox 的 FontFamily 作为字符串 XAML C#