1

asp.net C# と VS2012 Express を使用して MVC Web アプリケーションを開発しています。

他の 2 つのテーブル (および)Organizationsと 1 対多のリレーションシップを持つテーブル ( ) があります。3 つのテーブルすべてに、関係を維持するためのフィールドが含まれています。3 つのテーブルすべてに文字列フィールドがあります。CommentsProposalsOrganizationIDAddedBy

Organization.AddedBy="Joe"またはComments.AddedBy="Joe"またはのいずれかであるすべての組織を検索したいProposals.AddedBy="Joe"

これらのクエリは結合を行いますが、Organizations' fields.

// Find organizations created by this person.
IQueryable<Organization> org = from m in context.Organizations
where m.AddedBy.Equals("Joe")
select m;

// Find Comments created by this person.
IQueryable<Comment> comment = from m in context.Comments
where m.AddedBy.Equals("Joe")
select m;

// Join our two queries.
IQueryable<Comment> organizations = (from item in org
join c in comment on item.OrganizationID equals c.OrganizationID
select item).Distinct();

// Find Proposals created by this person.
IQueryable<Proposal> proposal = from m in context.Proposals
where m.AddedBy.Equals("Joe")
select m;

// Join our two queries.
organizations = (from item in organizations
join c in proposal on item.OrganizationID equals c.OrganizationID
select item).Distinct();

ご協力いただきありがとうございます。

4

2 に答える 2

2

Entity Framework を使用している場合は、次のいずれかを実行できます。

var orgs =  context.Organizations
                   .Where(O => O.AddedBy.Equals("Joe") || 
                               O.Comments.Any(C => C.AddedBy.Equals("joe")) ||
                               O.Proposals.Any(P => P.AddedBy.Equals("joe")));

ナビゲーション プロパティとの親子関係を維持するEFとして。

これが役立つことを願っています!!

于 2013-08-21T18:50:01.863 に答える
0

つまり、3 つの異なるセットをすべて組み合わせて探しています。これら 3 つのことをそれぞれクエリしてから、次のように組み合わせますUnion

string user = "Joe";

var addedOrganizations = context.Organizations.Where(org => org.AddedBy == user);

var orgsWithUsersComments = from org in context.Organizations
    join c in context.Comments
    on org.OrganizationID equals c.OrganizationID
    where c.AddedBy == user
    select org;

var orgsWithUsersProposals = from org in context.Organizations
    join p in context.Proposals
    where p.AddedBy == user
    select org;

var combinedResults = addedOrganizations.Union(orgsWithUsersComments)
    .Union(orgsWithUsersProposals);
于 2013-08-21T18:47:58.247 に答える