我有一张包含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;
执行此查询的最佳方法是什么?
谢谢
答案 0 :(得分:1)
您可以使用联接来执行此类操作。如果NullReferenceException
返回null并且您盲目地调用FirstOrDefault()
,那么还有一个优势就是避免.CategoryId
。
var query = erm.Table.Join(erm.Projects.Where(y => y.Id == lookId), x => x.CategoryId, y => y.CategoryId, (x,y) => x);
答案 1 :(得分:0)
int catId = erm.Projects.Where(y => y.Id == lookId).FirstOrDefault().CategoryId;
var results = erm.Table
.Where(x=> x.CategoryId == catId)
.ToList();
OR;
var query = from t in erm.Table join p in erm.Projects
on t.CategoryId equals p.CategoryId
where p.CategoryId = lookId
select t;
答案 2 :(得分:0)
你可以这样使用。
var categoryId= erm.Projects.FirstOrDefault(y => y.Id == lookId).CategoryId;
var results = erm.Table
.Where(x=> x.CategoryId == categoryId)
.ToList();