Linq Subquery同桌

时间:2013-09-23 14:44:20

标签: c# linq

我有一张包含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;

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

谢谢

3 个答案:

答案 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();