我在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值,但遗憾的是我无法提供所需的输出。
注意:两个列表只有相同的大小
答案 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循环 - 因为您无论如何都需要当前元素的索引。