2010-05-11 53 views
1

我有一个字符串数据数组,它包含这样转换字符串数据阵列列出

5~kiran 
2~ram 
1~arun 
6~rohan 

数据现在一个方法返回像字符串[]数据的值

public string [] names() 
    { 
     return data.Toarray() 
    } 

    public class Person 
    { 
     public string Name { get; set; } 
     public int Age { get; set; } 
    } 



List<Person> persons = new List<Person>(); 
    string [] names = names(); 

现在我需要复制所有从字符串数组,一个列表 的数据,并最后绑定到网格视图

gridview.datasoutrce= persons 

我怎样才能做到这一点。有没有内置的方法来做到这一点

在此先感谢

王子

回答

6

事情是这样的:

var persons = (from n in names() 
       let s = n.split('~') 
       select new Person { Name=s[1], Age=int.Parse(s[0]) } 
      ).ToList(); 
+0

谢谢Marcelo Cantos – happysmile 2010-05-11 12:35:35

1

假设源数据是完全有效的(即没有否定年龄,名称不包含“〜”,每一行都有年龄和名称等),这里有一个非常简单的实现:

List<Person> persons = new List<Person>; 

foreach (var s in names()) { 
    var split = s.Split('~'); 
    int age = int.Parse (split[0]); 
    string name = split[1]; 
    var p = new Person() { Age = age, Name = name }; 
    persons.Add (p); 
} 

您还可以使用更短的Linq查询。以Marcelo的答案为例。

+0

downvoted - 年龄能有2个位数。 – Femaref 2010-05-11 11:55:43

+0

@Femaref:的确,谢谢,修正! – mafu 2010-05-11 12:10:09

+0

downvote removed – Femaref 2010-05-11 13:13:41

3
var persons = names.Select(n => n.Split('~')) 
        .Select(a => new Person { Age=int.Parse(a[0]), Name=a[1] }) 
        .ToList(); 
+0

基本上和Marcelo的回答一样。 – LukeH 2010-05-11 11:55:29