私は最終的に私が欲しかったものを達成するために、次のコードを使用していました。興味深い注記:ロールを平らにしてコンマで連結したかったので、Aggregate演算子を使用するラッパーアクセサを使用してこれを行いました。どうやら集計演算子は、あなたが"the query operator "Aggregate" is not supported"
がそうでなければ、私はこのRoles = new List<string>(g.Select(u => u.pr.RoleName)).Aggregate((a, b) => a + ", " + b)
public class DAOPerson
{
public string Name { get; set; }
public int PeopleSkey { get; set; }
public List<string> RolesCollection { get; set; }
public string Roles
{
get { return RolesCollection.Aggregate((a, b) => a + ", " + b); }
}
}
IQueryable<DAOLocation> gridData;
gridData = (from lxr in db.LOCATION_XREFs
join l in db.LOCATIONs on lxr.LOCATION_SKEY equals l.LOCATION_SKEY
join c in db.COMPANies on l.COMPANY_SKEY equals c.COMPANY_SKEY
where lxr.DEPARTMENT_NUMBER == Department.BINDING_AUTHORITY_KEY
&& lxr.BRANCH_NUMBER == Branch.ATLANTAKEY
orderby c.NAME, l.INTERNAL_NAME ascending
select new DAOLocation
{
CompanyName = c.NAME,
CompanySkey = c.COMPANY_SKEY,
LocationName = l.INTERNAL_NAME,
LocationSkey = l.LOCATION_SKEY,
Persons = (from prlx in db.PeopleRoleLocationXrefs
join lxr2 in db.LOCATION_XREFs on prlx.LOCATION_XREF_SKEY equals lxr.LOCATION_XREF_SKEY
join p in db.PEOPLEs on prlx.PEOPLE_SKEY equals p.PEOPLE_SKEY
join pr in db.PeopleRoles on prlx.PeopleRoleKey equals pr.PeopleRoleKey
where lxr2.LOCATION_SKEY == l.LOCATION_SKEY
group new { p, pr } by p.PEOPLE_SKEY into g
select new DAOPerson
{
Name = g.First().p.LAST_NAME,
PeopleSkey = g.First().p.PEOPLE_SKEY,
RolesCollection = new List<string>(g.Select(u => u.pr.RoleName))
}).ToList()
});
のようにインライン右がそれを行っているでしょうあなたがグループしようとしている取得...またはあなたがオブジェクトを構築したいそうであるように、LINQクエリ内suuportedされていませんグラフ?グループ化はフラットな結果セットを返しますが、あなたの質問に基づいて、オブジェクトグラフが必要なように聞こえます。 – jrista
あなたは正しいです、私はオブジェクトグラフが必要です。違いを詳しく教えてください。私はそれに応じて私の投稿を修正します(または他の人がそうするかもしれません、私が "コミュニティwiki"としたように)-Thanks –