使用For Each在C#中组合两个List

时间:2017-04-11 10:14:09

标签: c# list

我在c#中有两个列表对象,如下所述

List A

[0]
    Count="0",
    CountType="0",
    InvTpeCode="DLX"
[1]
    Count="0",
    CountType="0"
    InvTpeCode="STD"

List B

[0]
    Count="2",
    CountType="17"
[1]
    Count="12",
    CountType="14"

我尝试使用foreach更新列表值列表b值,但遗憾的是我无法提供所需的输出。

注意:两个列表只有相同的大小

4 个答案:

答案 0 :(得分:4)

而不是for - 循环,您也可以使用Zip

var result = A.Zip(B, (a, b) => new Item {
                             InvTpeCode = a.InvTpeCode,
                             CountType = b.CountType, 
                             Count = b.Count });

答案 1 :(得分:2)

如果列表大小相同,那么for循环就足够了:

for (int i=0; i< A.Count();i++)
{
    A[i].Count = B[i].Count;
    A[i].CountType = B.CountType;
}

答案 2 :(得分:1)

foreach-loop在这里是不可解决的,我会做以下事情:

do {
    try AVAudioSession.sharedInstance().setCategory(
        AVAudioSessionCategoryPlayback,
        with: AVAudioSessionCategoryOptions.mixWithOthers
    )
    let utterance = AVSpeechUtterance(string: textResponse)
    utterance.rate = AVSpeechUtteranceDefaultSpeechRate
    let lang = "en-US"
    self.synth.continueSpeaking()
    utterance.voice = AVSpeechSynthesisVoice(language: lang)
    self.synth.continueSpeaking()
    self.synth.speak(utterance)
    self.stopEngine()
    self.startButton.isEnabled = true
    self.startButton.setTitle("Start", for: .normal)
} catch {
    print(error)
}

但请记住,如果列表A长于B,这将会很难。

答案 3 :(得分:0)

首先确保列表大小相同。

var index = 0;
foreach ( ObjA itemA in listA) {
  replaceValues(ObjA, listB[index]);
  index++;
}

然后,方法replaceValues应该使用listB中具有相同位置的项的属性替换ObjA的属性。 但我认为在这里使用foreach是没有意义的。可以使用简单的for循环 - 因为您无论如何都需要当前元素的索引。