Linq 子查询同一表
本文关键字:查询 Linq | 更新日期: 2023-09-27 18:32:38
我有一个包含 Id 和 CategoryId 的表。
我需要从该表中获取与给定 ID 具有相同 CategoryId 的所有记录。
这就是我想到的:
var query = from x in erm.Projects
where x.CategoryId == erm.Projects.Where(y => y.Id == lookId).FirstOrDefault().CategoryId
select x;
执行此查询的最佳方法是什么?
谢谢
您可以使用联接来执行此类操作。还具有避免NullReferenceException
的优点,如果FirstOrDefault()
返回 null 并且您盲目调用.CategoryId
。
var query = erm.Table.Join(erm.Projects.Where(y => y.Id == lookId), x => x.CategoryId, y => y.CategoryId, (x,y) => x);
int catId = erm.Projects.Where(y => y.Id == lookId).FirstOrDefault().CategoryId;
var results = erm.Table
.Where(x=> x.CategoryId == catId)
.ToList();
或;
var query = from t in erm.Table join p in erm.Projects
on t.CategoryId equals p.CategoryId
where p.CategoryId = lookId
select t;
你可以
用这种方式。
var categoryId= erm.Projects.FirstOrDefault(y => y.Id == lookId).CategoryId;
var results = erm.Table
.Where(x=> x.CategoryId == categoryId)
.ToList();