簡體   English   中英

從LINQ查詢返回匿名類型?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM