私はこのPOCOを持っており、特定の会社のユーザのリストを返したいと思います。EF 4.1 POCOクエリ
public class Company
{
public AccreditedCompany()
{
this.Branches = new HashSet<Branch>();
}
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity), ScaffoldColumn(false)]
public int CompanyId { get; set; }
public bool Active { get; set; }
public virtual ICollection<Branch> Branches { get; set; }
}
public class Branch
{
public Branch()
{
this.Users = new HashSet<User>();
}
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity), ScaffoldColumn(false)]
public int BranchId { get; set; }
public int CompanyId { get; set; }
public string Name { get; set; }
public string ContactName { get; set; }
public virtual Company Company { get; set;}
public virtual ICollection<User> Users { get; set; }
}
public class User
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity), ScaffoldColumn(false)]
public int UserId { get; set; }
public int BranchId { get; set; }
public string ComputerSN { get; set; }
public string CameraSN { get; set; }
public virtual Branch Branch { get; set; }
}
これは私のLINQクエリです:
var company = (from u in objDataContext.Companies.Include(c=>c.Branches.Select(v=>v.Users))
where u.CompanyId == 8 select u).FirstOrDefault();
IQueryable<User> users = (from j in company.Branches select j.Users);
私は2番目のクエリでこのコンパイルエラーを持っている:
エラー2は、暗黙的にタイプ 「System.Collections.Genericを変換できません。 IEnumerable> ' を' System.Linq.IQueryable 'に変更します。明示的な変換は、( あなたはキャストが欠けている?)私は事前に
SELECT dbo.Users.* FROM Branches INNER JOIN dbo.Users ON dbo.Branches.BranchId = dbo.Users.BranchId INNER JOIN dbo.Companies ON dbo.Branches.CompanyId = dbo.Companies.CompanyId WHERE (dbo.Companies.CompanyId = 8)
おかげのようなプレーンなSQL文に似たユーザーのリストを、取得したい
存在します。
それはあなたのSQLクエリを簡素化することができることを言及する価値があります:。 'dbo.UsersをSELECT *ブランチからの INNERがdbo.Branches.BranchId = dbo.Users.BranchId WHERE dbo.Branches.CompanyId = 8 ON dbo.Usersを登録しよう「あなたは「会社」に加入する必要は全くありません。 –