3

我有一个带有 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;

执行此查询的最佳方法是什么?

谢谢

4

3 回答 3

3

您可以使用连接来执行此类操作。还具有避免NullReferenceExceptionifFirstOrDefault()返回 null 并且您.CategoryId盲目调用它的优点。

var query = erm.Table.Join(erm.Projects.Where(y => y.Id == lookId), x => x.CategoryId, y => y.CategoryId, (x,y) => x);
于 2013-09-23T14:55:53.317 回答
1
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;
于 2013-09-23T14:46:40.377 回答
0

你可以使用这种方式。

var categoryId= erm.Projects.FirstOrDefault(y => y.Id == lookId).CategoryId;

var results = erm.Table
             .Where(x=> x.CategoryId == categoryId)
             .ToList();
于 2013-09-23T14:58:09.733 回答