我在LINQ之下,我想返回到collectionList。
var StudIds = from _NewIds in NewIds.AsEnumerable()
join _OldIds in allOldIds.AsEnumerable()
on _NewIds.Field<int>("Id") equals _OldIds.Field<int>("Id")
where _NewIds.Field<Boolean>("IsExist") == true && _NewIds.Field<string>("FieldName") == "FinalValue"
select new
{
Id = _NewIds.Field<int>("Id"),
Name = _NewIds.Field<string>("Name"),
Value = _NewIds.Field<decimal>("PRice")
};
List<std> lstCustomWebsiteVerifiedIndex = new List<std>();
这个Std类是haivg Id,name和Value as datamember。
知道如何对此进行类型转换吗?
答案 0 :(得分:1)
首先,您应该使用std
类,而不是将其投影到匿名类:
select new std
{
Id = _NewIds.Field<int>("Id"),
Name = _NewIds.Field<string>("Name"),
Value = _NewIds.Field<decimal>("PRice")
};
以后你可以这样做:
List<std> lstCustomWebsiteVerifiedIndex = StudIds.ToList();
但如果您的类std
是通过某个框架(如实体框架)生成的,那么您将无法使用投影,在这种情况下,您将需要一个临时类。
此外,如果您无法修改现有代码(使用匿名类),那么您可以使用查询投影到列表中,如:
List<std> lstCustomWebsiteVerifiedIndex = StudIds.Select(r=> new std
{
Id = r.Id,
Name = r.Name,
Value = r.Value,
})
.ToList();
答案 1 :(得分:1)
无需使用匿名类型,只需直接投射到std
类型:
var StudIds = from _NewIds in NewIds.AsEnumerable()
join _OldIds in allOldIds.AsEnumerable()
on _NewIds.Field<int>("Id") equals _OldIds.Field<int>("Id")
where _NewIds.Field<Boolean>("IsExist") == true && _NewIds.Field<string>("FieldName") == "FinalValue"
select new std
{
Id = _NewIds.Field<int>("Id"),
Name = _NewIds.Field<string>("Name"),
Value = _NewIds.Field<decimal>("PRice")
};