De bonnes réponses, mais n'en oubliez pas une. IMPORTANT chose - ils donnent des résultats différents !
var idList = new int[1, 2, 2, 2, 2]; // same user is selected 4 times
var userProfiles = _dataContext.UserProfile.Where(e => idList.Contains(e)).ToList();
Cela renverra 2 lignes de la base de données (et cela pourrait être correct, si vous voulez juste une liste d'utilisateurs triée distincte).
MAIS dans de nombreux cas, vous pourriez vouloir un non trié liste des résultats. Vous devez toujours y penser comme à une requête SQL. Veuillez voir l'exemple avec le panier d'achat eshop pour illustrer ce qui se passe :
var priceListIDs = new int[1, 2, 2, 2, 2]; // user has bought 4 times item ID 2
var shoppingCart = _dataContext.ShoppingCart
.Join(priceListIDs, sc => sc.PriceListID, pli => pli, (sc, pli) => sc)
.ToList();
Cela donnera 5 les résultats de la DB. L'utilisation de "contains" serait erronée dans ce cas.
4 votes
Chercher et trouver sont deux choses différentes. Mais puisque vous pouvez regarder par-dessus mon épaule grâce à Internet, pourriez-vous me dire comment vous savez que je n'ai pas fait de recherche ? attendez, ne dites rien ! Vous l'avez vu, n'est-ce pas ? C'est exactement ce que je veux dire.
6 votes
Poser une question coûte plus de temps que de faire une recherche. la prochaine fois, supposez qu'il/elle a fait une recherche ou 10.
2 votes
Ce point fait toujours l'objet d'une attention particulière, c'est pourquoi j'ai pensé mentionner que ReSharper fait un très bon travail en suggérant des endroits où vous pouvez transformer du code itératif en déclarations LINQ. Pour les personnes qui découvrent LINQ, il peut s'agir d'un outil indispensable rien que pour cela.