J'ai une chaîne d'Empidés séparés par des virgules comme:
et je Besoin de récupérer les enregistrements de tous les employés spécifiés à l'aide de la requête LINQ.
Je l'ai essayé avec une boucle, mais j'ai besoin d'obtenir cela de manière efficace et plus rapide. P> Voici ce que j'ai utilisé avec boucle. P> mais ce que je suis besoin est d'utiliser une requête unique Linq ou Lambda pour récupérer la même chose. Sans boucle P> P> Empid: "2007.2008 2002.1992,1000 218108 1085 code> p>
3 Réponses :
Si les identifiants que vous souhaitez récupérer sont des numéros, pas des chaînes, vous ne devez pas convertir la chaîne en une gamme de chaînes, mais à une séquence de chiffres:
var fetchedEmployees = dbContext.Employees .Where(employee => employeeIdsToFetch.Contains(employee.Id)) .Select(employee => new { // Select only the employee properties that you plan to use: Id = employee.Id, Name = employee.Name, ... });
Merci @harald pour votre aide et votre suggestion.
Vous pouvez utiliser le et si vous avez cette solution pour fonctionner avec LINQ à SQL, il suffit de ne pas compiler l'expression à la fin et laissez le moteur LINQ à SQL le compiler à une expression SQL efficace. P> < p> au lieu de la méthode code> globate code> (qui produira une expression avec une complexité linéaire), on pourrait utiliser une approche de division et conquérir pour plier les valeurs en une seule valeur. P> Par exemple avec Cette classe: p> et ensuite nous pouvons faire p> qui donne à l'évaluation une complexité de Expression code>
classe pour construire un FUNC
où CODE> METHODE:
log ( n) code>. p> p>
Conversion d'abord votre (virgule) Empid séparé à la matrice de chaîne comme ci-dessous: J'espère que cela aidera quelqu'un. P> P>
Qu'est-ce que tu as essayé jusque-là? Montrez un exemple de code que vous avez déjà - cela peut aider à rationaliser les autres membres du site pour vous répondre rapidement.
Convertissez d'abord votre (virgule) EMPID séparé (virgule) To String Array, comme
var EMPAR = EMPID.Split (','); CODE>
Var EmployéResult = Emplypeheys.Où (x => EMParr.Contains (x .Empid.tostring ())); code>
@Rafalon Oui Pouvez-vous donner plus de détails sur la même chose.
@Rajeev tableaux n'a pas
contient code>
@ Michaelschönbauer n'existe pas une extension LINQ pour les tableaux qui nous permettent d'utiliser
contient code> alors? La solution acceptée ici semble utiliser
contient code> sur tableaux
@ Michaelschönbauer, j'ai utilisé contient sur un tableau avec Linq plusieurs fois dans mon code. Vous pouvez vérifier à nouveau.
@ Rajeevkumar, merci beaucoup rajeev, cela a fonctionné comme prévu !!
@ NE2, vous êtes le bienvenu! S'il vous plaît voter pour mon commentaire aussi utile.
@Rajeevkumar pouvez-vous s'il vous plaît le poster comme une réponse ici?