2016-04-01 57 views
-4

我有一個三字符串類(firstname,lastname,account)。
我有這個類的兩個列表:C#組合兩類字符串

  • 第一列表包含其中firstnamelastname具有值
  • 第二個列表包含其中lastnameaccount具有值

的唯一標識符實例的實例是lastname。如何快速將第二個列表中的account值添加到第一個列表中的相應實例?

class MyClass 
{ 
    public string firstName = ""; 
    public string lastName = ""; 
    public string account = "" 
} 

List<MyClass> list1; //This is populated from a csv and fills strings firtname and lastname 
List<MyClass list2; // This is populated from a report and fills lastname and account 

這兩個列表有lastname但不necesarily以相同的順序相同的信息。我需要在lastname上匹配並設置list1中的實例的account

+1

'instance1.String3 = instance2.String3;'?我不明白這個問題。或者你是在談論這些類的兩個_lists_而不是兩個_instances_? –

+0

分享是關懷。請分享您的代碼。 –

+1

哎。哎唷,我的眼睛受傷了。 –

回答

0

既然你澄清,試試這個:

foreach(MyClass c1 in list1) 
{ 
    MyClass tmp = list2.FirstOrDefault(c2 => c1.lastname == c2.lastname); 
    c1.account = tmp != null ? tmp.account : null; // or string.Empty if you like 
} 
+0

我收到「.account」的語法錯誤,它顯示「Syntax error,」:'expected「 – AWooster

+0

因此,也許你沒有c#6?我會修復我的答案爲C#6前版本 –

+0

@AWooster更新了我的答案(並解決了您的問題) –

0

假設你已經適當的getter和setter定義,你希望確保它們具有相同的唯一標識符:

if (obj1.getString2().equals(obj2.getString2()) { 
    obj1.setString3(obj2.getString3()); 
} 

肯定?

雖然你必須留意這裏的空值。如果obj1爲null或obj.getString2()爲null,那麼您將遇到NullPointerException的問題。