0

ビジネス ロジック レイヤーでは、次のようなクラスを作成しました。

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では、メソッドの戻り値の型は何でしょうか?

SelectAllDataList<roleHasRight>戻り値の型として取りませんでした。エラーが発生します:

型 System.Linq.IQueryable < AnonymousType#1>' を 'System.Linq.IQueryable < spaBL.roleHasRight>' に暗黙的に変換することはできません

4

2 に答える 2

3

次を使用して、新しい匿名タイプを作成しています。

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}

次に、メソッドはこの新しいタイプのリストを返す必要があります。

public List<RoleHasRightInfo> SelectAllData() {
...
}
于 2012-07-06T08:08:50.650 に答える
0

RoleHasRight を返す場合は、現在のように匿名型ではなく、構築する必要があります。

select new RoleHasRight
{
    obj,
    role.roleName
}).ToList();
于 2012-07-06T08:14:31.677 に答える