0
votes

Comment puis-je distinct avec la condition?

voici la classe keaudrived : xxx

voici la classe olduer : xxx

Et voici la classe utilisateur : xxx

Enfin, voici deux Liste : < pré> xxx

tout l'identifiant de chaque classe est unique.

Maintenant, j'ai besoin de combiner keaudrived et OLDURER à un Tout neuf list .

Comme nous le savons, l'utilisateur arrive que la boutique peut être un nouvel utilisateur ou un ancien utilisateur. Si l'ID utilisateur de l'utilisateur dans CUNERARRIVÉE contient également dans OLDUREER , la propriété NewUser dans la nouvelle liste dans la nouvelle liste est false pour true .

À mon avis, je vais combiner deux liste en une première en une première, puis utilisez la méthode distincte pour supprimer les duplicats.

Cependant, il semble que le distinct ne peut pas fonctionner avec une condition.

Bien que je puisse utiliser plusieurs pour utiliser pour résoudre ce problème pendant que je pense que c'est si gênant. Je veux utiliser quelque chose de facile juste comme lambda ou linq . Comment puis-je atteindre cela?

=============================

ici est un exemple de l'entrée: xxx

La sortie est la suivante: xxx


4 commentaires

Pouvez-vous élaborer ce dont vous avez besoin en tant que sortie finale


Pouvez-vous conserver des échantillons de données et ce que vous attendiez que la sortie soit dans ces listes?


@Muhammad j'ai mis à jour la question, s'il vous plaît jeter un oeil.


@sriharsha j'ai mis à jour la question, s'il vous plaît jeter un oeil.


4 Réponses :


0
votes

J'espère que j'ai compris votre requête. Une façon d'y parvenir à la linq serait xxx


0 commentaires

0
votes

Maintenant, vous devez créer une liste distincte de utilisateur à partir de deux listes de types différents; CuveArited et OLDUREER Objets. Un utilisateur est identifié par un identifiant unique de type de chaîne.

En conséquence, je suggérerais ceci: xxx

qui obtient les identifiants uniques À partir des deux userrivedlist et Olduserlist et crée un nouvel objet objet pour chacun. Le olduserlist.count (o => o.id == x) == 0, Attribue false dans la propriété NewUser si l'utilisateur < Code> ID existe dans le Olduserlist sinon true .


8 commentaires

@Enigmativity qui vous a dit ça? L'avez-vous essayé?


Vous obtenez différents résultats aux granges, Anu et I.


@Enigmativity Eh bien, j'aime déjà les barms. Maintenant, laissez les bons résultats pour l'OP, il sait ce qu'il n'a pas besoin de vous. Bonne journée.


Votre code olduserlist.count (o => o.id == x) == 0 dit si le ID n'est pas dans l'ancienne liste, l'utilisateur doit être neuf. . L'OP dit "Si l'ID utilisateur de KeNserArived contient également dans OldUserer, la propriété Newuther de la nouvelle liste est FALSE pour True." qui est différent.


J'ai regardé certaines de vos autres réponses. Vous êtes un bon codeur solide et vos bonnes réponses écrites. Je pense que dans ce cas, vous venez de mal compris les exigences de l'OP - ils étaient un peu compliqué d'OMI.


@Enigmativitity Eh bien, vous pourriez aider un membre à comprendre également sans descendre :) comme ce que j'ai fait avec des bras ..


Je conviens que l'énoncé de la question était difficile à comprendre - les exigences relatives au résultat final n'étaient pas claires concernant la valeur souhaitée pour "NewUser" (au moins jusqu'à ce que l'OP a modifié l'instruction de question). En fait, j'ai considéré comme annotant ma solution avec la mise en garde que je devinait au résultat souhaité. JQsoft a évidemment une excellente compréhension du code - j'aime sa solution de base. La solution @enigmativitel est très élégante et succincte. Je vous souhaite bonne chance et je suis impatient de voir plus de solutions de votre part à la fois.


@Barns Pas de sentiments durs Buddy, c'est juste une discussion difficile. Franchement, j'apprends beaucoup de ses postes et j'apprends des vôtres maintenant. Merci à vous deux.



1
votes

La chose à propos de Linq - ce n'est pas toujours facile. En fait, cela peut avoir fumé encombré. Dans la question de la question, j'ai lu,

Je veux utiliser quelque chose de facile comme Lambda ou Linq.

Eh bien, c'est relatif. Mais je pense que lorsque vous utilisez LINQ, il faut essayer de le garder simple. Même casser la déclaration dans plusieurs déclarations si nécessaire. Pour cette raison, je propose cette solution (démontrée dans une application de console): xxx


Certainement, tout aurait pu être fait dans un Déclaration, mais je crois que cela le rend plus lisible et compréhensible.


EDIT:

Il y a eu quelques discussions parmi les codeurs d'affichage des solutions sur quelles conditions doivent être respectées pour que la valeur "NewUser" soit définie sur "VRAI". C'est ce que je comprends de la question initiale postée selon laquelle l'ID "doit être présent dans les deux listes" CuanaireRriDlist "et" OldUserList ", mais j'ai tendance à être d'accord avec @jqsoft qu'il a plus de sens que la seule condition qui doit être remplie devrait Soyez que le "ID" ne doit être présent que dans "OlduserList". Si tel est effectivement le cas que le SELECT () L'expression ci-dessus doit être .Sélectionnez (j => nouvel utilisateur {id = j, newuser =! SélectionnéeOrseer.contains (j)});


3 commentaires

@Jqsoft merci pour le conseil! J'aurais dû savoir que ... ou du moins lu les documents mieux. C'est une simplification et un temps d'exécution enregistré!


Ne sautez pas trop tôt. Votre réponse est correcte pour les données et la sortie des échantillons OPS. Jusqu'à présent, nous n'avons pas assez d'informations pour savoir qui a la bonne interprétation ici.


@JQsoft - J'essaie d'éviter de supprimer des commentaires. Cela fait de cela confusant de ce qui se passe.



1
votes

Si je comprends votre besoin, vous dites que si un identifiant est dans les deux listes, l'utilisateur est un ancien utilisateur, sinon c'est un nouvel utilisateur.

Voici le moyen le plus simple que je puisse trouver Faites-le: p> xxx pré>

testons avec une entrée: p> xxx pré>

Voici mes résultats: p>

Utilisateurs p>

B code> est le seul utilisateur qui apparaît dans les deux listes, donc devrait être false p>. p>.


Donc, il y a un peu de confusion sur les exigences ici. p>

L'OP a ajouté un exemple concret des données d'entrée et de la sortie attendue. P>

    var UserArrivedList = new List<UserArrived>()
    {
        new UserArrived() { id = "A" },
        new UserArrived() { id = "B" },
    };

    var OldUserList = new List<OldUser>()
    {
        new OldUser() { id = "B" },
        new OldUser() { id = "C" },
    };


11 commentaires

Comprenez-vous la question? :))


@JQsoft - Je sens que j'ai - et j'ai les mêmes résultats que les Barns & Anu.


Maintenant, vérifiez l'édition de l'OP et dites-moi qui a tort? Le NewUser = olduserlist.count (o => o.id == x) == 0, était juste après tout. Et pour des raisons de logique, comment une entrée d'un utilisateur pourrait-elle visiter la boutique pour la première fois dans les deux listes !!! Ne soyez pas hâtré compagnon. Bonne chance.


@JQsoft - Qu'est-ce qui est intéressant maintenant, c'est que mon code et votre code produisent le même résultat que l'OP recherche compte tenu de ses données d'échantillon.


@JQsoft - Cela semble être un cas de biais de confirmation. L'OP n'a pas clarifié leur exigence. Ils ont simplement donné un exemple concret - qui correspond à nos deux compréhensions de l'exigence . L'OP doit vraiment clarifier ce qu'ils veulent.


@JQsoft - J'ai mis à jour ma réponse pour montrer comment chaque salon des réponses avec l'entrée suggérée de l'OP et mon entrée suggérée (et plus complète).


Pas de problème camarade. Maintenant, déplacons et trouvons un autre.


@JQsoft - C'est un excellent exemple de l'endroit où l'OP pense Il a écrit une question claire et où il pense Il a clarifié les questions à portée de main, mais en fait, il a fait Ni . Ce qui fait si bien fonctionne si bien que les utilisateurs comme nous travaillent dur pour améliorer la qualité des questions et des réponses.


Il y a plusieurs manières pendant que je préfère le vôtre car c'est le plus facile. Merci beaucoup.


@Volfogg - Pas de soucis. Toute chance que vous puissiez clarifier ce que l'exigence exacte était?


@Enigmativitity Il est destiné à sortir une feuille de tous les informations de l'utilisateur avant la journée. Je dois donc combiner ces deux listes en un.