tickets.Where(t => new[] {"Open",
"Active",
"Reopen",
"InActive"}.Any(x => x == t.status))
Vous pouvez également utiliser la méthode Contain au lieu de la méthode Any, mais utilisez la méthode Any si vous souhaitez mettre en œuvre une logique de comparaison, au lieu du comparateur d'égalité par défaut.
OU
Implémenter des extensions pour supporter la méthode IN :
public static class Extensions
{
public static bool In<TItem>(this TItem source, Func<TItem, TItem, bool> comparer, IEnumerable<TItem> items)
{
return items.Any(item => comparer(source, item));
}
public static bool In<TItem, T>(this TItem source, Func<TItem, T> selector, IEnumerable<TItem> items)
{
return items.Select(selector).Contains(selector(source));
}
public static bool In<T>(this T source, IEnumerable<T> items)
{
return items.Contains(source);
}
public static bool In<TItem>(this TItem source, Func<TItem, TItem, bool> comparer, params TItem[] items)
{
return source.In(comparer, (IEnumerable<TItem>)items);
}
public static bool In<TItem, T>(this TItem source, Func<TItem, T> selector, params TItem[] items)
{
return source.In(selector, (IEnumerable<TItem>)items);
}
public static bool In<T>(this T source, params T[] items)
{
return source.In((IEnumerable<T>)items);
}
}
Et utilisez comme ça :
bool b;
b = 7.In(3, 5, 6, 7, 8); // true
b = "hi".In("", "10", "hi", "Hello"); // true
b = "hi".In("", "10", "Hi", "Hello"); // false
b = "hi".In((s1, s2) => string.Equals(s1, s2, StringComparison.OrdinalIgnoreCase), "", "10", "Hi"); // true
var tuples = new List<Tuple<int, string>>();
for (var i = 0; i < 10; i++)
{
tuples.Add(Tuple.Create(i, ""));
}
var tuple = Tuple.Create(3, "");
b = tuple.In(tup => tup.Item1, tuples); // true