【问题标题】:How to fill out DTO in C#如何在 C# 中填写 DTO
【发布时间】:2012-12-23 11:06:24
【问题描述】:

我无法阅读我的 DTO 列表。

我希望从数据库中接收 DTO 列表,以便将它们放在 WPF 部分的表中,但是当我运行程序时,列表中没有数据,也没有错误。我不明白为什么,我的代码有问题吗?

   public IList<ProductDTO> GetProducts()
{
       IList<ProductDTO>listofproducts = new List<ProductDTO>();
       ProductDTO productDto = new ProductDTO();


    using (var db = new NORTHWNDEntities())
    {
        var query = from p in db.Products

                    select new
                    {
                        Name = p.ProductName,     
                    };

        foreach (var product in query)
        {
            productDto.Name = product.Name;
            listofproducts.Add(productDto);
        }

        return listofproducts;
    }     
}

更新版本:

我收到一个名为 entityexception 的错误,在代码末尾(tolist)没有被用户代码处理

 public IEnumerable<ProductDTO> GetProducts()
        {
            using (var db = new NORTHWNDEntities())
            {
                return db.Products.Select(m => new ProductDTO { Name = m.ProductName }).ToList();
            }
        }

【问题讨论】:

  • 您多次向列表添加相同的引用
  • 查询真的返回什么吗?

标签: c# database foreach dto


【解决方案1】:

您正在向列表中添加相同的引用。你可以这样修复它:

public IList<ProductDTO> GetProducts()
{
    IList<ProductDTO>listofproducts = new List<ProductDTO>();
    using (var db = new NORTHWNDEntities())
    {
        var query = from p in db.Products
                    select new
                    {
                        Name = p.ProductName,     
                    };
        foreach (var product in query)
        {
            listofproducts.Add(new ProductDTO {Name = product.Name});
        }
        return listofproducts;
    }     
}

或者

    public IList<ProductDTO> GetProducts()
    {
        using (var db = new NORTHWNDEntities())
        {
            return db.Products.Select(m=>new ProductDTO{Name = m.ProductName}).ToList();
        }     
    }

【讨论】:

  • @Zaz 如果您直接从 select 语句中选择 ProductDTO,您可以完全摆脱 foreach。然后,让它变得更好,你返回一个 ProductDTO 的 IQUeryable,用户可以添加他认为合适的过滤器。
猜你喜欢
  • 2012-11-14
  • 2021-08-23
  • 2021-12-05
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多