我使用了通用ORM列表 例。
这是我的桌子。
Person table
Guid
Name
LastName
这是我的结构类。
public struct PersonItem // database and class field names are the same
{
public Guid Guid{ get; set; }
public string Name { get; set; }
public string LastName { get; set; }
}
public struct PersonItems
{
public PersonItems()
{
Items = new List<PersonItem>();
}
public List<PersonItem> Items { get; set; }
}
我正在使用这样但没有问题,但我总是要写字段的
public PersonItems GetPersons()
{
var query = (from p in _DbEntities.t_Crew
select p).ToList();
if (query != null)
{
foreach (var item in query)
{
_PersonItems.Items.Add(new PersonItem
{
Guid = item.Guid,
Name = item.Name,
LastName = item.LastName
});
}
}
return _PersonItems;
}
public PersonItems GetPersons()
{
PersonItems personItems = new PersonItems();
var query = from p in _DbEntities.t_Person
select p; >> this here query I need to convert linq query result to list
personItems = query.ToList();
return personItems ;
}
error
无法将类型System.Collections.Generic.List'隐式转换为PersonData.PersonItems'。
答案 0 :(得分:2)
试试这个
public PersonItems GetPersons()
{
PersonItems personItems = new PersonItems();
var query = (from p in _DbEntities.t_Person
select new PersonItems
{
test = p.SomeName,
//Other Stuff
//...
}).ToList();
return query;
}
答案 1 :(得分:1)
与GetPersons()
方法的其他版本相比,我认为这一行:
personItems = query.ToList();
应该是这样的:
personItems.Items = query.ToList();
有关最新错误的更新。您无法将t_Person
到[{1}}属性的列表分配为Item
类型列表。因此,您的查询需要调整为返回PersonItem
的列表:
PersonItem
或其他选项是将var query = from p in _DbEntities.t_Person
select new PersonItem
{
Guid = p.Guid,
Name = p.Name,
LastName = p.LastName
};
属性的定义更改为Item
列表:
t_Person
答案 2 :(得分:0)
无法将类型System.Collections.Generic.List'隐式转换为PersonData.PersonItems'
以上错误表示您正在尝试将通用列表转换为PersonItems。
因此,在这一行,query.ToList()
代码返回List<PersonItem>
而不是PersonItems
var query = from p in _DbEntities.t_Person
select p; >> this here query I need to convert linq query result to list
personItems = query.ToList();
return personItems ;
这就是上面代码行失败的原因。
答案 3 :(得分:0)
这个怎么样? 更改PersonItems的.ctor:
public struct PersonItems
{
public PersonItems(List<PersonItem> items)
{
Items = items;
}
public List<PersonItem> Items { get; set; }
}
然后方法GetPersons():
public PersonItems GetPersons()
{
return new PersonItems(_DbEntities.t_Person.ToList());
}