例如,我有一个字符串[]格式如下:
1000internal_ref
838Bdoesnt_have_to_start_with_internal_ref_and_this_can_be_as_long_as_it_needs_to_be
我需要获取前四个字符(在这种情况下为1000和838B)并将这些字符放在ListView中 - ID - 在ListView中,设置为"详细信息"模式,然后获取剩余的字符并将其放在第二列(内部)。它会显示如下,但不是文本形式,当然:
IDs | Internals
---- | ---------------------------------------
1000 | internal_ref
838B | doesnt_have_to_start_with_internal_ref_and_this_can_be_as_long_as_it_needs_to_be
我的资源中有一个文本文件,其中包含应放在ListView中的字符串。它总是10348行,这就是为什么我专门为ListView设置的两个字符串数组那么长。字符串将使用'\r'
进行拆分,以便将它们放入数组中。我已经看到了如何基于字符串数组向ListView添加项目的答案,但是如果它有多个列则没有。我不太确定如何做我需要做的事,这就是我现在所拥有的一切。
string[] foo = Properties.Resources.sfxlist.Split('\r');
string[] ids = new string[10348];
string[] inte = new string[10348];
int i = 0;
foreach (string s in foo)
{
ids[i] = s.Take(4).ToArray().ToString(); // I've also tried doing it without ToArray(), no dice
inte[i] = s.Skip(4).ToArray().ToString(); // see above
i += 1;
}
1ListView.Items.Add("IDs").SubItems.AddRange(inte);
1ListView.Items.Add("Internals").SubItems.AddRange(ids);
答案 0 :(得分:0)
这有效
var myArray = new string[]{"1000internal_ref", "838Binternal_ref_this_can_be_as_long_as_it_needs_to_be"};
var list = myArray.Select(i =>
{
var left = i.Substring(0, i.IndexOf("internal_ref"));
var right = i.Substring(i.IndexOf("internal_ref"));
return new { Id = left, Internals = right };
}).ToList();
list.ForEach(x => Console.WriteLine(x.Id + "---" + x.Internals));
1000 --- internal_ref
838B --- internal_ref_this_can_be_as_long_as_it_needs_to_be
现在,将列表绑定到列表视图
如果您的ID总是4个字符长,请将linq更改为
var list = myArray.Select(i =>
{
var left = i.Substring(0, 4);
var right = i.Substring(4);
return new { Id = left, Internals = right };
}).ToList();
答案 1 :(得分:0)
在你的情况下,我会做以下事情:
1ListView.Columns.Add("IDs");
1ListView.Columns.Add("Internals");
1ListView.Items.AddRange(Properties.Resources.sfxlist.Split('\r')//split the value
.Select(val => new ListViewItem(new string[]//assign a listviewitem to each value
{ val.Substring(0, IndexOf("internal_ref")),//the subitems consist of the two values
val.Substring(IndexOf("internal_ref")) })).ToArray());
Tadaa,所有这些东西都在一个命令中: - )
此外,如果使用大量值,使用linq也可以使其快速,这不是最后一个方面。
如果这个答案有帮助,请告诉我。