Linq To SQL метод с .Contains терпит неудачу - PullRequest
0 голосов
/ 15 августа 2011

У меня есть следующий метод Linq To SQL.Когда я шагаю по коду, spcCodeIDs содержит семь ожидаемых записей.Однако я получаю исключение во время выполнения

Method 'Boolean Contains(System.String)' has no supported translation to SQL.

Что мне не хватает?

public static DataTable GetSPCCodeList()
{         

    using (var context = ProviderDataContext.Create())
    {
        IQueryable<tblProviderAdminSPCCode> tSPCCode = context.GetTable<tblProviderAdminSPCCode>();
        IList<string> spcCodeIDs = BLLCmo.FCApprovedSPCsForGreenSheet();
        return (tSPCCode
                .Where(spcCode => spcCode.Inactive == null && spcCodeIDs.Contains(spcCode.SPCCodeID)) 
                .OrderBy(spcCode => spcCode.SPCCodeID)
                .Select(spcCode => new { spcCode.SPCCodeID, spcCode.SPCDescription, spcCode.SPCCategoryID }))
                .CopyLinqToDataTable();
    }
}

Ответы [ 2 ]

6 голосов
/ 15 августа 2011

LINQ to SQL может поддерживать только переводы Содержит переводы из конкретного списка, но не интерфейс IList. Попробуйте изменить строку с

IList<string> spcCodeIDs = BLLCmo.FCApprovedSPCsForGreenSheet();

на

List<string> spcCodeIDs = BLLCmo.FCApprovedSPCsForGreenSheet().ToList();
0 голосов
/ 15 августа 2011

Вам необходимо передать строку в качестве параметра в Contains.Таким образом, пытаясь передать spcCode.SPCCodeID.ToString ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...