【发布时间】:2013-06-10 23:23:39
【问题描述】:
我有一个如下的一维字符串[]数组
string[] header = new string[30];
public class GetList
{
public string ServerID;
public string Name;
public GetList(string sName, string cName)
{
this.ServerID = sName;
this.Name = cName;
}
}
我有一个查询,它将返回服务器名称和组件名称列表,如下所示
var query = (from a in this.hmdb.Servers
join b in this.hmdb.Components
on a.ServerID equals b.ServerID
select new { a.ServerID, b.Name});
如何将查询结果插入到字符串[]头中?
编辑
当我尝试这样的事情时
var query = (from a in this.hmdb.Servers
where a.ServerID.Contains(match)
join b in this.hmdb.Components
on a.ServerID equals b.ServerID
select new
{
ID = a.ServerID,
Name = b.Name
}).ToArray();
我得到的结果是 ServerID 和 Names 的列表
更新
这里是标记答案的解释..
正在发生的事情是它将创建一个可查询/列表的 ServerID 和 Name 然后将其转换为 Enumerable 并使用 .Select() 扩展名创建一个字符串列表并将其转换为字符串数组 select new { a.ServerID, b.Name } --> 创建一个具有 ServerID 和 Name 属性的匿名类型的列表/iqueryable..
AsEnumerable() --> 将其转换为 Enumerable 以便我们可以使用 string.Format 因为 SQL to LINQ 不支持 string.Format
Select(x => string.Format("{0} - {1}", x.ServerID, x.Name)) --> 执行 Select 以使用 ServerID 和名称创建字符串列表
ToArray() --> 只需将其转换为 String[] 在那里。
【问题讨论】:
-
你有一个
string的数组,但你处理的是一个GetList类。不匹配。提供将GetList对象转换为字符串的方法,或使用GetList对象数组。 -
我已经删除了该类并仅使用 select new {} 进行了编辑。请检查..
-
header = query.toArray();
-
@JibranKhan 我已经试过了。它对我不起作用