无法使用LINQ to SQL中的范围变量访问表字段

本文关键字:范围 变量 访问表 字段 SQL LINQ to | 更新日期: 2023-09-27 18:25:44

我在项目中使用LINQ to SQL。我有两个表Category和Artifacts,Category和Artifacts之间有一对多的关系。在CatgID的基础上,我正在尝试删除工件。我写的查询检查是否存在外键为id的工件,然后我将工件id分组为g以便计数,这样我就可以设置一个条件,将工件id作为参数传递给一个函数,该函数将删除工件表中的所有内容。

我无法使用相同的范围变量"a"选择ArtId。为什么不呢?我如何才能做到这一点或以其他方式实现我想要的?

public static void DeleteCategory(int id)
{
    var result = from a in adb.Artifacts
                     where a.CatgId == id
                     group a by a.ArtId into g
                     select new { count = g.Count(), **artid = a.ArtId** }; //not able to get ArtId using range variable a.
    if (result.count > 0)
    {
        foreach (var r in result)
        {
            MyArtifact.DeleteByKey(r.artid);
        }
    }
}

无法使用LINQ to SQL中的范围变量访问表字段

您可以只使用g.ArtId,因为您按ArtId:分组

public static void DeleteCategory(int id)
{
    var result = from a in adb.Artifacts
                 where a.CatgId == id
                 group a by a.ArtId into g
                 select new { count = g.Count(), artid = g.Key }; //not able to get ArtId using range variable a.
    if (result.count > 0)
    {
        foreach (var r in result)
        {
            MyArtifact.DeleteByKey(r.artid);
        }
    }
}