是否可以将子字符串与 OfType<string> 一起使用?
Is it possible to use substring with OfType<string>?
我在一个学校项目中,我想知道如何在多行文本框中显示 - 而不是列表框,这是问题的一部分 - 如何显示 checkedListBox 的选中项目的前五个字母。我们不能直接显示它们,我们必须使用构造函数创建一个数组,该数组将保存在 User class 中。我的第一个想法是使用 selectedIndexChanged checkListBox 事件并使用递增的 .Items 和 .substring 将选定的子字符串放入数组中。这是我的第一个代码:
private void checkedListBox_programmes_SelectedIndexChanged(object sender, EventArgs e)
{
int selection = checkedListBox_programmes.SelectedIndex;
if (selection != -1)
{
if (indice < 5)
{
tabProgrammes[indice] = checkedListBox_programmes.Items[selection].ToString().Substring(0, 6);
indice++;
}
else
{
MessageBox.Show("Tableau de données est rempli");
}
}
}
}
*tabProgrammes 和 indice 在我的部分初始化 class
这没有用,因为取消选中索引会在我的数组中添加一个字符串。
所以,第二个代码(我使用 buton_click 事件):
// remplissage du tableau avec les éléments sélectionnées
tabProgrammes = checkedListBox_programmes.CheckedItems.OfType<string>().ToArray();
// création du profile
Profil unProfil = new Profil(textBox_Prenom.Text, textBox_Nom.Text, textBox_Utilisateur.Text, dateTimePicker_Naissance.Value, tabProgrammes);
// affichage des donnees
textBox_Affichaqe.Text = unProfil.ToString();
效果非常好,因为我可以毫无问题地选中和取消选中。 SO,我的问题是我只需要将我选中的项目的子字符串 (0,6) 放入我的数组中。
一个想法?
是的,您可以对 OfType<string>()
的结果使用 Substring()
。
为此,您需要根据具体情况使用 Linq Select()
operator。
这是一个例子:
static void Main(string[] args)
{
var dataSource = new object[]
{
42,
"bonjour",
"allo",
1000,
"salut"
};
var myStrings = dataSource
.OfType<string>()
// In this case, we use substring only if the length of the string is above 6.
.Select(s => s.Length > 6 ? s.Substring(0, 6) : s)
.ToArray();
foreach (var item in myStrings)
{
Debug.WriteLine(item);
}
}
输出如下:
bonjou
allo
salut
我在一个学校项目中,我想知道如何在多行文本框中显示 - 而不是列表框,这是问题的一部分 - 如何显示 checkedListBox 的选中项目的前五个字母。我们不能直接显示它们,我们必须使用构造函数创建一个数组,该数组将保存在 User class 中。我的第一个想法是使用 selectedIndexChanged checkListBox 事件并使用递增的 .Items 和 .substring 将选定的子字符串放入数组中。这是我的第一个代码:
private void checkedListBox_programmes_SelectedIndexChanged(object sender, EventArgs e)
{
int selection = checkedListBox_programmes.SelectedIndex;
if (selection != -1)
{
if (indice < 5)
{
tabProgrammes[indice] = checkedListBox_programmes.Items[selection].ToString().Substring(0, 6);
indice++;
}
else
{
MessageBox.Show("Tableau de données est rempli");
}
}
}
}
*tabProgrammes 和 indice 在我的部分初始化 class
这没有用,因为取消选中索引会在我的数组中添加一个字符串。 所以,第二个代码(我使用 buton_click 事件):
// remplissage du tableau avec les éléments sélectionnées
tabProgrammes = checkedListBox_programmes.CheckedItems.OfType<string>().ToArray();
// création du profile
Profil unProfil = new Profil(textBox_Prenom.Text, textBox_Nom.Text, textBox_Utilisateur.Text, dateTimePicker_Naissance.Value, tabProgrammes);
// affichage des donnees
textBox_Affichaqe.Text = unProfil.ToString();
效果非常好,因为我可以毫无问题地选中和取消选中。 SO,我的问题是我只需要将我选中的项目的子字符串 (0,6) 放入我的数组中。 一个想法?
是的,您可以对 OfType<string>()
的结果使用 Substring()
。
为此,您需要根据具体情况使用 Linq Select()
operator。
这是一个例子:
static void Main(string[] args)
{
var dataSource = new object[]
{
42,
"bonjour",
"allo",
1000,
"salut"
};
var myStrings = dataSource
.OfType<string>()
// In this case, we use substring only if the length of the string is above 6.
.Select(s => s.Length > 6 ? s.Substring(0, 6) : s)
.ToArray();
foreach (var item in myStrings)
{
Debug.WriteLine(item);
}
}
输出如下:
bonjou
allo
salut