Невозможно получить доступ к полям таблицы, используя переменную диапазона в LINQ to SQL - PullRequest
1 голос
/ 23 февраля 2012

Я использую LINQ to SQL в своем проекте. У меня есть две таблицы Category и Artifacts с отношением один-ко-многим между Category и Artifacts. На основе CatgID я пытаюсь удалить артефакты. Написанный мною запрос проверяет, существует ли какой-либо артефакт с внешним ключом id, затем я группирую ID артефакта в g для подсчета, чтобы можно было выполнить условие для передачи идентификатора артефакта в качестве параметра функции, которая будет удалять все в таблице Артефактов.

Я не могу выбрать ArtId с использованием той же переменной диапазона 'a'. Почему бы и нет? Как я могу сделать это или иным образом добиться того, чего я хочу?

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);
        }
    }
}

1 Ответ

2 голосов
/ 23 февраля 2012

Вы можете просто использовать 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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...