首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >LINQ to Entities中仅支持无参数构造函数和初始值设定项

LINQ to Entities中仅支持无参数构造函数和初始值设定项
EN

Stack Overflow用户
提问于 2010-08-26 07:43:55
回答 12查看 104.9K关注 0票数 138

我在这个linq表达式中有这个错误:

代码语言:javascript
复制
var naleznosci = (from nalTmp in db.Naleznosci
                              where nalTmp.idDziecko == idDziec
                              select new Payments
                              (
                                  nalTmp.Dziecko.Imie,
                                  nalTmp.Dziecko.Nazwisko,
                                  nalTmp.Miesiace.Nazwa,
                                  nalTmp.Kwota,
                                  nalTmp.RodzajeOplat.NazwaRodzajuOplaty,
                                  nalTmp.RodzajeOplat.TypyOplat.NazwaTypuOplaty,
                                  nalTmp.DataRozliczenia,
                                  nalTmp.TerminPlatnosci
                              )).ToList();

你知道怎么解决这个问题吗?我试着用任何表达的组合...:/

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2010-08-26 13:04:01

如果没有更多关于“Payments”的信息,这不会有太大帮助,但假设你想创建一个Payments对象,并根据列值设置它的一些属性:

代码语言:javascript
复制
var naleznosci = (from nalTmp in db.Naleznosci
                              where nalTmp.idDziecko == idDziec
                              select new Payments
                              {
                                  Imie = nalTmp.Dziecko.Imie,
                                  Nazwisko = nalTmp.Dziecko.Nazwisko,
                                  Nazwa= nalTmp.Miesiace.Nazwa,
                                  Kwota = nalTmp.Kwota,
                                  NazwaRodzajuOplaty = nalTmp.RodzajeOplat.NazwaRodzajuOplaty,
                                  NazwaTypuOplaty = nalTmp.RodzajeOplat.TypyOplat.NazwaTypuOplaty,
                                  DataRozliczenia = nalTmp.DataRozliczenia,
                                  TerminPlatnosci = nalTmp.TerminPlatnosci,
                              }).ToList();
票数 129
EN

Stack Overflow用户

发布于 2012-12-14 16:31:10

如果您仍然希望使用构造函数进行初始化,而不是使用属性(有时这种行为是为了初始化目的而需要的),则需要在某些时候使用LINQ to Collections,因为LINQ to SQL不知道如何将构造函数转换为SQL查询。您可以使用AsEnumerable()来实现这一点。

因此,您的代码应该如下所示:

代码语言:javascript
复制
var naleznosci = 
    db.Naleznosci
        .Where(nalTmp => nalTmp.idDziecko == idDziec)
        .Select(nalTmp => new
            {
                DzieckoImie = nalTmp.Dziecko.Imie,
                DzieckoNazwisko = nalTmp.Dziecko.Nazwisko,
                MiesiaceNazwa = nalTmp.Miesiace.Nazwa
                Kwota = nalTmp.Kwota,
                NazwaRodzajuOplaty = nalTmp.RodzajeOplat.NazwaRodzajuOplaty,
                NazwaTypuOplaty = nalTmp.RodzajeOplat.TypyOplat.NazwaTypuOplaty,
                DataRozliczenia = nalTmp.DataRozliczenia,
                TerminPlatnosci = nalTmp.TerminPlatnosci
            }) // Select necessary columns from DB into anonymous type.
        .AsEnumerable() // Here comes transfer to LINQ to Collections.
        .Select(nalImp => new Payments
            (
                nalTmp.DzieckoImie,
                nalTmp.DzieckoNazwisko,
                nalTmp.MiesiaceNazwa,
                nalTmp.Kwota,
                nalTmp.NazwaRodzajuOplaty,
                nalTmp.NazwaTypuOplaty,
                nalTmp.DataRozliczenia,
                nalTmp.TerminPlatnosci
            )) // Use constructor to create your models.
        .ToList();
票数 119
EN

Stack Overflow用户

发布于 2011-08-24 00:32:00

我自己刚刚遇到了这个错误,我想我应该补充说,如果Payment类型是struct,那么您也会遇到相同的错误,因为struct类型不支持无参数构造函数。

在这种情况下,将Payment转换为类并使用对象初始值设定项语法将解决此问题。

票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3571084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档