Tôi có Liệt kê hai danh sách mà tôi cần phải kết hợp và loại bỏ các giá trị nhân bản của cả hai danh sáchlàm thế nào để hợp nhất 2 Danh sách <T> với loại bỏ giá trị trùng lặp trong C#
Một chút khó khăn để giải thích, vì vậy hãy để tôi chỉ cho một ví dụ về những gì mã trông giống như, và những gì tôi muốn như một kết quả, trong mẫu tôi sử dụng loại int không ResultAnalysisFileSql lớp.
first_list = [1, 12, 12, 5]
second_list = [12, 5, 7, 9, 1]
Kết quả của việc kết hợp hai danh sách nên kết quả trong danh sách này: results_list = [1, 12, 5, 7, 9]
Bạn sẽ nhận thấy kết quả có danh sách đầu tiên, bao gồm hai giá trị "12" và trong second_list có giá trị 12, 1 và 5 bổ sung.
lớp 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;
}
}
Bất kỳ mẫu mã cho máy liên hợp và loại bỏ các bản sao không?
khi tôi sử dụng 'Bộ sưu tập' không hoạt động và chỉ chuyển tất cả các mục ... –
@Dr TJ: Lớp học của bạn có triển khai IEqualityComparer không? Nếu vậy, bạn sẽ cần phải kiểm tra các phương thức GetHashCode và Equals của bạn. Xem phần Nhận xét của http://msdn.microsoft.com/en-us/library/bb341731.aspx. –
Quan trọng cần lưu ý vì tôi gặp phải sự cố khi sử dụng tính năng này trên 2 bộ sưu tập khác nhau: "Bạn không thể kết hợp hai loại khác nhau, trừ khi một người khác kế thừa từ" khác từ http://stackoverflow.com/a/6884940/410937 mang lại 'không thể suy ra từ lỗi usage'. – atconway