Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq子查询同一个表_C#_Linq - Fatal编程技术网

C# Linq子查询同一个表

C# Linq子查询同一个表,c#,linq,C#,Linq,我有一张有Id和CategoryId的桌子 我需要从该表中获取与给定Id具有相同类别Id的所有记录 这就是我得出的结论: var query = from x in erm.Projects where x.CategoryId == erm.Projects.Where(y => y.Id == lookId).FirstOrDefault().CategoryId select x; 执行此查询的最佳方式是什么 多谢各位 int cat

我有一张有Id和CategoryId的桌子

我需要从该表中获取与给定Id具有相同类别Id的所有记录

这就是我得出的结论:

var query = from x in erm.Projects
            where x.CategoryId == erm.Projects.Where(y => y.Id == lookId).FirstOrDefault().CategoryId
            select x;
执行此查询的最佳方式是什么

多谢各位

int catId = erm.Projects.Where(y => y.Id == lookId).FirstOrDefault().CategoryId;

var results = erm.Table
             .Where(x=> x.CategoryId == catId)
             .ToList();


您可以使用连接来执行这类操作。如果
FirstOrDefault()
返回null并且盲目地调用
.CategoryId
,则还具有避免
NullReferenceException
的优点

var query = erm.Table.Join(erm.Projects.Where(y => y.Id == lookId), x => x.CategoryId, y => y.CategoryId, (x,y) => x);
你可以用这种方式

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

var results = erm.Table
             .Where(x=> x.CategoryId == categoryId)
             .ToList();

lookId是一个Table.Id而不是Table.Category这就是您要查找的内容?使用该解决方案有什么问题?还有,您使用的是什么查询提供程序?
var categoryId= erm.Projects.FirstOrDefault(y => y.Id == lookId).CategoryId;

var results = erm.Table
             .Where(x=> x.CategoryId == categoryId)
             .ToList();