2016-06-16 1 views
3
List<sring> MyList = new List<string>(); 

string MyUser = "James Wilson" 

MyList.Add(MyUser); 

My Model Entity die Spalte ist call_toAnrufe werden angezeigt, wenn meine Liste von Strings wie die Entität Spalte

"User 1 (Claims)" 
"User 2 (Department3)" 
"James Wilson (Development)" 
"User 4" 
"User 2" 
"James Wilson (Development)" 

model.where(w => MyList.Contains(w.call_to)).select(s => s) 

Nun ist diese 0 Anrufe zu mir zurückkehrt, weil call_to mir zeigt, wie "James Wilson (Development)

Ich habe überprüft, dass dies das Problem ist, denn wenn ich es so ändere:

Es gibt nur die Anrufe zurück, an die ich angehängt bin.

Also meine Frage ist, wie kann ich es machen, ob call_from nur meinen Namen enthält und passt es nicht genau?

Antwort

4

In Ihrer Aussage ...

model.Where(w => MyList.Contains(w.call_to)) 

... Contains passt nur, wenn MyList eine Zeichenfolge enthält, die genau w.call_to übereinstimmt. Stattdessen sollten Sie überprüfen, ob MyList mindestens eine Saite (jeden string), dass enthältw.call_to:

model.Where(w => MyList.Any(s => s.Contains(w.call_to))) 

Vorsicht aber. Dies funktioniert nur gut, wenn MyList nicht zu lang ist. EF muss die Liste in SQL konvertieren, was viel generierten Code benötigt, der die Ausführung von Abfragen verlangsamt. Überprüfen Sie das generierte SQL, um zu sehen, was ich meine.

Side Anmerkung: die .Select(s => s) Teil redundant ist.

+0

Dank war ich in der Lage, dass zur Arbeit zu kommen, und auch den Teil .Select ich mich immer gefragt, über. Kudos! –

Verwandte Themen