J'ai deux listes Liste que je dois combiner dans la troisième liste et supprimer les valeurs en double de ces listes
Un peu difficile à expliquer, alors laissez-moi vous montrer un exemple de ce à quoi ressemble le code et de ce que je veux en conséquence, dans l'exemple, j'utilise le type int et non la classe ResultAnalysisFileSql.
first_list = [1, 12, 12, 5]
deuxième_liste = [12, 5, 7, 9, 1]
Le résultat de la combinaison des deux listes doit aboutir à cette liste: résultant_list = [1, 12, 5, 7, 9]
Vous remarquerez que le résultat a la première liste, y compris ses deux valeurs "12", et dans second_list a une valeur supplémentaire de 12, 1 et 5.
Classe ResultAnalysisFileSql
[Serializable]
public partial class ResultAnalysisFileSql
{
public string FileSql { get; set; }
public string PathFileSql { get; set; }
public List<ErrorAnalysisSql> Errors { get; set; }
public List<WarningAnalysisSql> Warnings{ get; set; }
public ResultAnalysisFileSql()
{
}
public ResultAnalysisFileSql(string fileSql)
{
if (string.IsNullOrEmpty(fileSql)
|| fileSql.Trim().Length == 0)
{
throw new ArgumentNullException("fileSql", "fileSql is null");
}
if (!fileSql.EndsWith(Utility.ExtensionFicherosErrorYWarning))
{
throw new ArgumentOutOfRangeException("fileSql", "Ruta de fichero Sql no tiene extensión " + Utility.ExtensionFicherosErrorYWarning);
}
PathFileSql = fileSql;
FileSql = ObtenerNombreFicheroSql(fileSql);
Errors = new List<ErrorAnalysisSql>();
Warnings= new List<WarningAnalysisSql>();
}
private string ObtenerNombreFicheroSql(string fileSql)
{
var f = Path.GetFileName(fileSql);
return f.Substring(0, f.IndexOf(Utility.ExtensionFicherosErrorYWarning));
}
public override bool Equals(object obj)
{
if (obj == null)
return false;
if (!(obj is ResultAnalysisFileSql))
return false;
var t = obj as ResultAnalysisFileSql;
return t.FileSql== this.FileSql
&& t.PathFileSql == this.PathFileSql
&& t.Errors.Count == this.Errors.Count
&& t.Warnings.Count == this.Warnings.Count;
}
}
Un exemple de code pour combiner et supprimer les doublons?
la source
cannot be inferred from the usage
erreur.pourquoi pas simplement par exemple
oh ... selon msdn, vous pouvez laisser de côté le
.Distinct()
la source
Union n'a pas de bonnes performances: cet article décrit comment les comparer ensemble
Listes et fusion LINQ: 4820 ms Fusion de
dictionnaire: 16
ms HashSet et IEqualityComparer: 20ms
LINQ Union et IEqualityComparer: 24ms
la source
Union
résulte un code plus propre et plus lisible. Passer du temps à hyper-optimiser le code lorsqu'il n'est pas lent peut entraîner une pénalité de maintenance sur la route.Utilisez l'Union de Linq:
la source
la source