Contains J'ai une méthode d'extension qui est censé filtrer un objet Queryable (IQueryable) basée sur une collection de Ids ....débordement de pile dans LINQ to SQL et le mot-clé
Notez que IQueryable provient de mon base de données via une requête LinqToSql
public static IQueryable<NewsItemSummary> WithID(this IQueryable<NewsItemSummary> qry, IQueryable<Guid> Ids)
{
return from newsItemSummary in qry
where Ids.Contains(newsItemSummary.ID)
select newsItemSummary;
}
Si Ids sont créés à partir d'un tableau ou d'une liste et passé comme une liste interrogeable, cela ne fonctionne pas
Par exemple ...
GetNewsItemSummary().WithID(ids.AsQueryable<Guid>())
Si Ids se compose d'une forme de demande LinqToSql, il ne fonctionne pas !!
Ceci est connu numéro: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=355026
collection Mon Ids ne peut pas venir d'une demande LinqToSql ...
Remarque, si je change la fonction afin qu'elle consomme et IList plutôt que d'un IQueryable .. ..
public static IQueryable<NewsItemSummary> WithID(this IQueryable<NewsItemSummary> qry, IList<Guid> Ids)
{
return from newsItemSummary in qry
where Ids.Contains(newsItemSummary.ID)
select newsItemSummary;
}
Je reçois maintenant l'exception suivante:
Method 'Boolean Contains(System.Guid)' has no supported translation to SQL.
Alors ... tout ce que je veux faire est de filtrer ma collection de nouvelles basées sur une liste ou un tableau de Guids .... Idées ???
Pour que vous le sachiez, la balise "stackoverflow" est généralement utilisée pour les méta-questions, tandis que la balise "stack-overflow" est préférable pour les débordements de pile réels. – Zifre