webForumDet fria alternativet

Linq skicka in en collection

.NET

5 svar · 620 visningar · startad av Bjuris

Medlem sedan juli 2001514 inlägg
Frågan#1

Jag har en lista som användaren kan välja vilka användare som skall inkluderas i en rapport.
Detta sker via checkboxar och jag skapar en collection av valen som är gjorda.

Kan man skicka in en collection i en linq fråga?

typ:

var result = (from t in table
                          where t.UserId.Equals(idcollection)
                          select t);
Medlem sedan mars 20007 896 inlägg
#2
from t in table
    where idcollection.Contains(t.UserId)
select t
Medlem sedan juli 2001514 inlägg
#3

nop!
funkar icke.

LINQ to Entities does not recognize the method ‘Boolean Contains(System.Guid)’ method, and this method cannot be translated into a store expression.

Läste på en blogg om en extender
http://sandrino.be/category/net/ado-ef-net/

men jag vill ju lösa det på rätt sätt...

Medlem sedan mars 20007 896 inlägg
#4

LINQ to SQL stöder inte det nej... Det var enbart LINQ to IENumerable. Du blir tvungen att bygga upp hela uttrycket eller använda Lambda (som i din länk).

Bygga upp uttrycket:

StringBuilder sb = new StringBuilder();
foreach (long id in idcollection) {
    if (sb.Length > 0)
        sb.Append(" OR ");

    sb.Append("t.UserId==");
    sb.Append(id.ToString);
}

var result = d.table.Where(sb).Select(result => new {result.[Fält], result.[Fält]});

Typ. Byt ut [Fält] mot de fält du vill plocka ut.

Medlem sedan dec. 19996 721 inlägg
#5

I LINQ to SQL fungerar det finfint, men inte i LINQ to Entities (EF). Query-hanteringen i LINQ to SQL är ljudår (inte ljusår, det vore att överdriva) bättre än den i EF.

Dynamiskt uppbyggd Entity SQL eller den visade "extendern" är enda vägen just nu.

Medlem sedan juli 2001514 inlägg
#6

Det slutatde med att jag änvände extendern på http://sandrino.be/category/net/ado-ef-net/
Funkar perfa. Dock så har jag ett ställe där jag skall hitta alla som <b>Inte</b> finns i mon collection. Någon som vet hur man kan modifiera så att det fungerar?

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)