public static void Main()
{
// the words
string[] wordsX ={"word1", "word2","word3"};
// the labels as array
Label[] labels = {Label1, Label2};
// zip them together into a new anonymous class
// (use the shortest collection)
var combined = wordsX.Zip(labels, (w, l) => new { Word = w, Label = l});
// display them with foreach.
foreach (var item in combined)
{
// assign the label.Text to the word
item.Label.Text = item.Word;
}
}
明细:
// first collection
var combined = wordsX
// second collection
.Zip(labels,
// function to return new instance (class with no name)
(w, l) => new { Word = w, Label = l});
3条答案
按热度按时间ht4b089n1#
您面临的问题是,您希望使用
wordX
元素的值设置标签的值在你写一些额外的if语句和开关之前。你可以使用一些聪明的linq。诀窍是,创建一个数组这些标签,你可以压缩它们
大概是这样的:
明细:
rdlzhqv92#
你需要通过运行时字符串而不是编译时符号来访问标签。为此你可以使用Controls.Find。
ar7v8xwq3#
像所有问题一样,我们不知道是否只有3个值,或者说1 '到15个值(页面上的标签)。
更糟糕的是为什么要使用循环和必须键入标签名称-甚至到数组中?(挫败了使用循环的全部目的!)。
因此,让我们假设一个列表,比如说1到10个项目,并且因此:
好的,我们不仅需要处理传递一个列表,比如说只有5个值,我们还必须清空那些没有值的值(或者这里有人想到过吗????)
因此,您可以这样做:
上面假设我们有label 1到label 10,但它将为5或50或任何你有多少工作。