Ho bisogno di farlo usando la sintassi concatenata di linq. Ho:Come faccio a sintonizzarsi con Linq
string[] arr = new string[] {"Chicago", "NewYork"};
var a = Members.Where(x => x.City == <here I want to get all members in chicago or newyork)
Ho bisogno di farlo usando la sintassi concatenata di linq. Ho:Come faccio a sintonizzarsi con Linq
string[] arr = new string[] {"Chicago", "NewYork"};
var a = Members.Where(x => x.City == <here I want to get all members in chicago or newyork)
è possibile utilizzare un semplice Contains
.
var a = Members.Where(x => arr.Contains(x.City));
estensioni statiche funzionano bene con il tuo LINQ esigenze:
// add this class to your project...
public static class StringExtensions
{
public static bool IsIn(this string target, params string[] testValues)
{
return testValues.Contains(target);
}
}
e ora il tuo codice originale può essere modificato in questo modo:
// quick and dirty code:
var a = Members.Where(x => x.City.IsIn("Chicago", "NewYork");
// less quick and dirty code:
string[] arr = new string[] {"Chicago", "NewYork"};
var a = Members.Where(x => x.City.IsIn(arr);
So che questo è vecchio, ma ho pensato questo aiuterebbe i nuovi lettori di questo post.
Simile a code4life, utilizzo un metodo di estensione. La differenza, però, è che io uso i generici, quindi questo funzionerà con più tipi.
Potete leggere la mia blog post per visualizzare ulteriori informazioni su come fare questo, ma l'idea principale è questo:
Con l'aggiunta di questo metodo di estensione per il tuo codice:
public static bool IsIn<T>(this T source, params T[] values)
{
return values.Contains(source);
}
è possibile eseguire la vostra ricerca come questa:
var a = Members.Where(x => x.City.IsIn("Chicago", "NewYork");
funziona su qualsiasi tipo (fino a quando si crea un buon metodo di uguale). Qualsiasi tipo di valore di sicuro.
Se dovessi usare la sintassi JOIN o la sintassi IN, come dovrei farlo (sebbene la risposta funzioni come un incantesimo) – DotnetDude
@Dotnet, cosa intendi? "JOIN o IN" - Sono cose molto diverse. – jjnguy
Intendi "IN" come criterio "JOIN"? – n8wrl