Restituisce il tipo anonimo dalla query LINQ?

In questo livello di business logic, ho creato una class come questa:

public List 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; } } 

Quindi quale sarebbe il mio tipo di ritorno del metodo SelectAllData ?

SelectAllData non ha preso l’ List come tipo restituito darà un errore:

Imansible convertire implicitamente il tipo System.Linq.IQueryable ‘a’ System.Linq.IQueryable ‘

    Stai creando un nuovo tipo anonimo utilizzando:

     select new { obj,role.roleName} 

    Questo tipo ha 2 proprietà (il rolename e l’object roleHasRights). Per poter restituire la stessa informazione con il metodo, è necessario creare una class con queste informazioni o restituire una dynamic.

    per esempio

     public class RoleHasRightInfo { public string Rolename {get;set;} public roleHasRight Right {get;set;} } 

    e creala all’interno dell’espressione linq come questa:

     select new RoleHasRightInfo(){ Right=obj,Rolename = role.roleName} 

    Il metodo dovrebbe quindi restituire un elenco di questo nuovo tipo:

     public List SelectAllData() { ... } 

    Se restituisci RoleHasRight devi costruirlo, non un tipo anonimo come fai ora:

     select new RoleHasRight { obj, role.roleName }).ToList();