假設我有一個類
public class A
{
public string Id{get;set;}
public string Name{get;set;}
public string Num{get;set;}
}
現在我有兩個List集合
List<A> list1= new List<A>();
List<A> list2 = new List<A>();
我想把list2中的Num賦值給list1中的Num
由于資料量較大 我不想用回圈去賦值
有沒有一次性給某個屬性賦值的方法
求助大佬們
uj5u.com熱心網友回復:
不用回圈去賦值是因為1.資料量大
2.我想執行的這個操作非常頻繁
所以我在考慮有沒有非回圈的賦值方式
uj5u.com熱心網友回復:
不知道Copy的方式能不能滿足你的需求uj5u.com熱心網友回復:
結帖,可以說沒有你要的回答。程式員遵守邏輯,不遵守某個園子里整天告訴你們的“血案”不回圈,神仙都沒救。我們只能說hash查找比list find快
但是絕對不能說,俺就要不回圈。因為你要做更新,無論微軟還是IBM都需要回圈,只能說他們可以用索引,B tree 快速定位記錄,而不是他們不回圈
uj5u.com熱心網友回復:
如果你說用l2直接替換L1,我們說你直接 L1=l2 就好如果你說L1+L2 那么直接linq的Concat方法,直接連接兩個就好
從你提問的方式我們說,你實際是要更新,left join ,或者 update by key 這類
就算俺們用linq寫,他內部一樣要回圈。 集合操作,集合操作,和差并補,那種操作不回圈呢?
我們唯一可能的建議是用字典,用hash 替代List1,以減少查找的消耗。 而list2的回圈不可避免
uj5u.com熱心網友回復:
那除了for回圈foreach這兩種回圈去賦值 可以再給我提供其他的賦值方式嗎 linq可以寫嗎
uj5u.com熱心網友回復:
var result = from x in list1
join y in list2
on x.Id equals y.Id
into temp
from z in temp.DefaultIfEmpty()
select new A { Id = x.Id, Name = x.Name, Num = (z == null) ? x.Num : z.Num };
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/231918.html
標籤:C#
上一篇:"不存在具有鍵“tas_CustomerInfo”的“IEnumerable<SelectListItem>”型別的 ViewData 項。"}
