0

模型

public partial class SayacOkumalariIstatistik
{
    public string sno { get; set; }
    public Nullable<System.DateTime> okuma_tarihi { get; set; }
    public Nullable<decimal> TotalUsageValue { get; set; }
    public string UsageType { get; set; }
}

功能

public IList<SayacOkumalariIstatistik> SayacOkumalariGetir()
{
    #region linq concat
    IEnumerable<SayacOkumalariIstatistik> sayac_okumalari_istatistik = entity.TblSayacOkumalari
        .Select(x => new SayacOkumalariIstatistik
        {
            sno = x.sno.ToString() + "T1",
            okuma_tarihi = x.okuma_tarihi,
            TotalUsageValue = x.toplam_kullanim_T1,
            UsageType = "T1"
        })
        .Concat(entity.TblSayacOkumalari.Select(x => new SayacOkumalariIstatistik
         {
             sno = x.sno.ToString() + "T2",
             okuma_tarihi = x.okuma_tarihi,
             TotalUsageValue = x.toplam_kullanim_T2,
             UsageType = "T2"
         }))
         .Concat(entity.TblSayacOkumalari.Select(x => new SayacOkumalariIstatistik
         {
              sno = x.sno.ToString() + "T3",
              okuma_tarihi = x.okuma_tarihi,
              TotalUsageValue = x.toplam_kullanim_T3,
              UsageType = "T3"
         }));
        #endregion

        // Error occurs in here
        return sayac_okumalari_istatistik.ToList();
    }

错误消息是我的问题标题。为什么会出现这个错误。

谢谢。

4

2 回答 2

2

错误消息是不言自明的。您不能也不应该将实体类用作投影 DTO(我猜SayacOkumalariIstatistik是这样的类)

您至少有 3 种选择:

  1. 首先检索原始实体,然后使用 Linq 对对象进行投影(即在ToList调用之后)。
  2. 创建一个 DTO 类 ( SayacOkumalariIstatistikViewModel, SayacOkumalariIstatistikDTO, 不管什么) 并在您的查询中使用它。
  3. 使用匿名对象进行投影。
于 2012-07-11T14:10:12.940 回答
1

这样做是为了在 Linq to Entities 和 Linq to objects 之间有一个明显的区别/断点。在 Linq to Sql 中,您可以轻松地在内存中而不是在数据库中执行大型操作,而无需知道代码将要执行此操作。

您必须只返回匿名类型、原语、实体类型或三者的组合。

于 2012-07-11T14:12:59.820 回答