簡體   English   中英

使用Linq通過實體框架關系將父記錄短名單化

[英]Use Linq to shortlist parent records by using Entity Framework relations

我在Visual Studio 2013中有一個使用DB-First Entity Framework 5和.NET Framework 4.5的項目。我有一個一般的要求,我將使用一個示例進行解釋:在數據庫中,有以下表格:

  • 公司
  • 用戶
  • company_user <<公司與用戶的多對多關系表

在.NET中創建實體模型后,我的公司類包含以下字段,其中包括:

public virtual ICollection<company_user> company_user { get; set; }

我想編寫一個linq查詢,該查詢基於其company_user集合中至少一個記錄具有Id == x的條件為我提供了一個來自公司集合的過濾記錄集,其中x是某個用戶ID。 這意味着我想獲取與某個用戶相關的所有公司的列表。 目前,我正在這樣做,這...並不優雅:

var cList1 = (from c in db.companies
                            join cu in db.company_user on c.Id equals cu.CompanyId
                        select new
                        {
                            CompanyId = cu.CompanyId,
                            UserId = cu.UserId,
                            CompanyName = c.Name
                        }).ToList().Where(x => x.UserId == u.Id);

        List<company> companies = new List<company>();
        foreach (var cv in cList1)
        {
            company c = new company();
            c.Id = cv.CompanyId;
            c.Name = cv.CompanyName;
            companies.Add(c);
        }

        //companies now has the set of companies that I need

請幫助我編寫最簡潔的查詢以實現相同的效果。

在此先感謝Zawar

怎么樣:

db.companies.Where(c => c.company_user.Any(cu => cu.UserId == u.Id));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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