【发布时间】:2014-05-12 09:19:31
【问题描述】:
我正面临一个编译时错误,例如
Cannot implicitly convert type 'System.Collections.Generic.List<AnonymousType#1>' to 'System.Collections.Generic.List<AnonymousType#2>'
这是我的代码:
var query = Enumerable.Repeat(new
{
Id = default(int),
Name = string.Empty,
type_id = default(int),
Ownername = string.Empty,
Ownermob = string.Empty,
ContactPerson = string.Empty,
ContactPersonmob = string.Empty,
Phone = string.Empty,
Mobile = string.Empty,
Room = string.Empty,
Build = string.Empty,
Road = string.Empty,
Area = string.Empty,
City = string.Empty,
country_id = default(int?),
state_id = default(int?),
Email = string.Empty,
Remark = string.Empty,
UserOFC = default(bool),
UserVAT = default(bool),
UserINV = default(bool),
UserNone = default(bool),
Username = string.Empty,
Register_Date = default(DateTime)},0).ToList();
query = db.Parties.Where(p => p.type_id.Equals(GroupByENTYPE)).OrderByDescending(p => p.Register_Date).Select(p => new
{
Id = p.Id,
Name = p.Name,
type_id = p.type_id,
Ownername = p.Ownername,
Ownermob = p.Ownermob,
ContactPerson = p.ContactPerson,
ContactPersonmob = p.ContactPersonmob,
Phone = p.Phone,
Mobile = p.Mobile,
Room = p.Room,
Build = p.Build,
Road = p.Road,
Area = p.Area,
City = p.City,
country_id = p.country_id,
state_id = p.state_id,
Email = p.Email,
Remark = p.Remark,
UserOFC = p.UserOFC,
UserVAT = p.UserVAT,
UserINV = p.UserINV,
UserNone = p.UserNone,
Username = db.Users.Where(u => u.Ref_no.Equals(p.User_id)).Select(u => u.Username).FirstOrDefault(),
Register_Date = p.Register_Date
}).FilterForColumn(ColumnName, SearchText).ToList();//here error occurs
}
这里用于声明公共查询部分并在多个条件下分配它。在 FilterColumn 部分面临编译时错误。如何在另一个页面上使用相同类型的此声明不会产生任何问题。
我在这里放置了提供知识的表模式:
---------------------已更新--------- -------------------
Id int Unchecked
Name varchar(50) Unchecked
type_id int Unchecked
Ownername varchar(50) Checked
Ownermob nchar(10) Checked
Room varchar(10) Checked
Build varchar(50) Checked
Road text Checked
Area text Checked
City varchar(50) Checked
Phone nchar(10) Checked
Mobile nchar(10) Checked
Email varchar(100) Checked
ContactPerson varchar(50) Checked
ContactPersonmob nchar(10) Checked
UserOFC bit Checked
UserVAT bit Checked
UserINV bit Checked
UserNone bit Checked
state_id int Checked
country_id int Checked
Remark text Checked
Register_Date smalldatetime Unchecked
User_id char(14) Unchecked
请帮帮我...
【问题讨论】:
-
我强烈怀疑您的某个属性类型不正确。如果不了解您的派对类型,我们无法判断。仔细查看每一个属性 - 或者一次删除一堆,直到你可以编译它。
-
是的 char(14) 就像字符串一样
-
@JonSkeet 看看我更新的问题。
-
如果你从生成的模型代码中指定CLR类型会更清楚,即
p.Ownername的类型等等。毕竟,这就是编译器会关心的。 -
好吧,我希望您自己查看每个属性。您可以将鼠标悬停在第二个查询中的每个属性上,并将其与您在
Enumerable.Range调用中使用的类型进行比较...
标签: c# linq anonymous-types linq-expressions