簡體   English   中英

使用LINQ在C#中合並兩個對象列表

[英]Merge two object lists in C# with LINQ

我有兩個相同類型的List<T> 有沒有一種簡單的方法可以合並到這兩個集合而不會循環通過這兩個集合並將它們合並為第三集合?

var myObject= new List<Core.MyObject>();
var myObject2= new List<Core.MyObject>();

if(!string.IsNullOrEmpty(txb.Text))
{
    var repository = ServiceLocator.Current.GetInstance<Core.RepositoryInterfaces.IRepository>();
    myObject= repository.GetWherePostCodeLike(txb.Text).ToList();
}

if(!string.IsNullOrWhiteSpace(ddl.SelectedValue))
{
    var repository = ServiceLocator.Current.GetInstance<Core.RepositoryInterfaces.IRepository>();
    myObject2= repository.GetNearTownX(ddlLocations.SelectedValue).ToList();
}

能夠僅在第二個上使用+ =會很好,但是這是不允許的...有什么想法嗎?

調用Concat (保留重復項)或Union (跳過重復項)LINQ方法

IEnumerable<MyObject> third = list.Concat(otherList);

要使用Union ,您需要重寫EqualsGetHashCode以按值比較對象。 (或傳遞IEqualityComparer<MyObject>

您有幾種選擇。

您可以將它們串聯:

var combined = dataSet.Concat(dataSet2).ToList();

您可以將一個添加到另一個:

dataSet.AddRange(dataSet2);

您可以執行以下操作:

var merged = dataSet.Concat(dataSet2).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM