LINQ to NHibernate - Confrontare 2 liste
-
28-09-2019 - |
Domanda
Ho 2 liste e ho bisogno di sapere se ci sono delle corrispondenze. Ho provato con request.Interests.Intersect(x.Post.Tags.Split(' ')).Count() > 0
ma ottengo l'errore
System.NotImplementedException: The metodo Intersect non è implementato.
Così, ho provato una funzione ricorsiva che restituisce un bool. Ed è come se la chiamata di funzione viene semplicemente ignorato.
Ecco la mia funzione
private bool GenerateInterestsExpression(string postTags, string[] interests)
{
if (interests.Length == 0)
return false;
string interest = interests[0];
var newInterests = interests.ToList();
newInterests.Remove(interest);
return GenerateInterestsExpression(postTags, newInterests.ToArray()) || postTags.ToLowerInvariant().IndexOf(interest.ToLowerInvariant()) >= 0;
}
ecco cosa il pezzo rilevante del mio aspetto espressione LINQ come.
request.Profile.Tags.Count == request.Interests.Length
||
(
request.Profile.Tags.Count != request.Interests.Length
&&
x.Post.Tags != String.Empty
&&
(
GenerateInterestsExpression(x.Post.Tags, request.Interests)
)
)
Quando GenerateInteresExpression ha un punto di interruzione in esso, non mettere in pausa. Ho provato la costruzione di una funzione ricorsiva per costruire l'espressione al volo, ma non riesco a capire come la catena delle espressioni LINQ insieme. Tutte le idee su come realizzare questo con LINQ dinamica per LINQ to NHibernate?
Soluzione
ho dovuto cambiare per usare HQL e dinamicamente costruire la query HQL.