[英]Return anonymous type from LINQ query?
在業務邏輯層中,我創建了一個像這樣的類:
public List<roleHasRight> SelectAllData()
{
try
{
return (from obj in Data.roleHasRights
join role in Data.roles on obj.FK_roleId equals role.roleId
select new
{
obj,
role.roleName
}).ToList();
}
catch
{
return null;
}
}
那么,我的SelectAllData
方法的返回類型是SelectAllData
?
SelectAllData
沒有將List<roleHasRight>
作為返回類型,它將給出一個錯誤:
無法將類型System.Linq.IQueryable <AnonymousType#1>'隱式轉換為'System.Linq.IQueryable <spaBL.roleHasRight>'
您正在使用以下方法創建新的匿名類型:
select new { obj,role.roleName}
此類型具有2個屬性(rolename和roleHasRights對象)。 為了能夠通過該方法返回相同的信息,您需要使用此信息創建一個類,或者返回一個動態信息。
例如
public class RoleHasRightInfo {
public string Rolename {get;set;}
public roleHasRight Right {get;set;}
}
並在linq表達式中創建它,如下所示:
select new RoleHasRightInfo(){ Right=obj,Rolename = role.roleName}
然后,該方法將需要返回此新類型的List:
public List<RoleHasRightInfo> SelectAllData() {
...
}
如果返回RoleHasRight,則需要構造它,而不是像現在這樣構造匿名類型:
select new RoleHasRight
{
obj,
role.roleName
}).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.