C# 如何从列表中创建<;类名>;双字符串数组(名称、值)?
我上过以下课程:C# 如何从列表中创建<;类名>;双字符串数组(名称、值)?,c#,silverlight,c#-4.0,silverlight-5.0,C#,Silverlight,C# 4.0,Silverlight 5.0,我上过以下课程: class Node { public string NameField{ get; set; } public string ValueField{ get; set; } } 还有一个节点列表,如var test=new list,我需要制作两个字符串数组作为string[],第一个包含所有名称字段,第二个包含所有值字段,我编写了以下代码: string[] NameField = new string[test.Count]; string[
class Node
{
public string NameField{ get; set; }
public string ValueField{ get; set; }
}
还有一个节点列表,如var test=new list
,我需要制作两个字符串数组作为string[]
,第一个包含所有名称字段,第二个包含所有值字段,我编写了以下代码:
string[] NameField = new string[test.Count];
string[] ValueField = new string[test.Count];
int i = 0;
foreach (var s in prefsNameValueArray)
{
NameField[i] = s.CTMAttrName;
ValueField[i] = s.CTMAttrValue;
i++;
}
我能用LINQ做同样的事情吗?有人能帮我改进这段代码吗
提前感谢,,
Ramzy与Linq:
string[] NameFields = nodes.Select(n => n.NameField).ToArray();
string[] ValueFields = nodes.Select(n => n.ValueField).ToArray();
Linq不一定是这里最有效的方法,因为如果使用查询而不是集合,则ToArray
可能会创建一个太大的数组(由于倍增算法)。但它很短,可读性强(而且大部分都足够快)
这是for循环版本:
int count = nodes.Count(); // in case you want to change the collection type or use a linq query
string[] NameField = new string[count];
string[] ValueField = new string[count];
for (int i = 0; i < count; i++)
{
NameField[i] = nodes.ElementAt(i).NameField;
ValueField[i] = nodes.ElementAt(i).ValueField;
}
int count=nodes.count();//如果要更改集合类型或使用linq查询
字符串[]名称字段=新字符串[计数];
字符串[]值字段=新字符串[计数];
for(int i=0;i
使用Linq:
string[] NameFields = nodes.Select(n => n.NameField).ToArray();
string[] ValueFields = nodes.Select(n => n.ValueField).ToArray();
Linq不一定是这里最有效的方法,因为如果使用查询而不是集合,则ToArray
可能会创建一个太大的数组(由于倍增算法)。但它很短,可读性强(而且大部分都足够快)
这是for循环版本:
int count = nodes.Count(); // in case you want to change the collection type or use a linq query
string[] NameField = new string[count];
string[] ValueField = new string[count];
for (int i = 0; i < count; i++)
{
NameField[i] = nodes.ElementAt(i).NameField;
ValueField[i] = nodes.ElementAt(i).ValueField;
}
int count=nodes.count();//如果要更改集合类型或使用linq查询
字符串[]名称字段=新字符串[计数];
字符串[]值字段=新字符串[计数];
for(int i=0;i
使用Lambda表达式
string[] NameField = prefsNameValueArray.Select(x=> x.NameField).ToArray();
string[] ValueField = prefsNameValueArray.Select(x=> x.ValueField).ToArray();
使用
Lambda表达式
string[] NameField = prefsNameValueArray.Select(x=> x.NameField).ToArray();
string[] ValueField = prefsNameValueArray.Select(x=> x.ValueField).ToArray();