Saya memiliki dua daftar Daftar yang perlu saya gabungkan di daftar ketiga dan menghapus nilai duplikat dari daftar itu
Agak sulit dijelaskan, jadi izinkan saya menunjukkan contoh seperti apa kode itu dan apa yang saya inginkan sebagai hasilnya, dalam sampel saya menggunakan tipe int bukan kelas ResultAnalysisFileSql.
first_list = [1, 12, 12, 5]
second_list = [12, 5, 7, 9, 1]
Hasil dari penggabungan dua daftar harus menghasilkan daftar ini: result_list = [1, 12, 5, 7, 9]
Anda akan melihat bahwa hasilnya memiliki daftar pertama, termasuk dua nilai "12", dan di second_list memiliki nilai tambahan 12, 1 dan 5.
Kelas 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;
}
}
Adakah kode sampel untuk menggabungkan dan menghapus duplikat?
sumber
cannot be inferred from the usage
kesalahan.mengapa tidak misalnya saja
oh ... menurut msdn Anda dapat meninggalkan
.Distinct()
sumber
Union tidak memiliki kinerja yang baik: artikel ini menjelaskan tentang membandingkannya dengan satu sama lain
Daftar dan penggabungan LINQ: 4820 ms
Penggabungan kamus: 16ms
HashSet dan IEqualityComparer: 20ms
LINQ Union dan IEqualityComparer: 24ms
sumber
Union
menghasilkan kode yang lebih bersih dan lebih mudah dibaca. Menghabiskan waktu untuk hiper-optimisasi kode ketika tidak lambat dapat dikenakan penalti pemeliharaan di jalan.Gunakan Linq's Union:
sumber
sumber