如何将LINQ结果插入到string []数组中

dem*_*ser 2 c# linq c#-4.0

我有一个一维string []数组,如下所示

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;
        }
    }        
Run Code Online (Sandbox Code Playgroud)

我有一个查询,它将返回服务器名称和组件名称的列表,如下所示

   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});
Run Code Online (Sandbox Code Playgroud)

如何将查询结果插入string []标头中?

编辑

当我尝试这样的事情

  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();
Run Code Online (Sandbox Code Playgroud)

我得到的结果是ServerID和名称的列表

更新

这是标记答案的说明。

发生的事情是它将创建一个可查询的ServerID和Name的列表,然后将其转换为Enumerable并使用.Select()扩展名创建一个字符串列表,并将其转换为字符串数组,然后选择new {a.ServerID,b.Name }->创建具有ServerID和Name属性的匿名类型的列表/ iqueryable。

AsEnumerable()->将其转换为Enumerable,这样我们就可以使用string.Format,因为从SQL到LINQ不支持string.Format

Select(x => string.Format(“ {0}-{1}”,x.ServerID,x.Name))->做一个Select以便使用ServerID和Name创建一个String列表

ToArray()->在那里简单地将其转换为String []。

aia*_*tag 5

尝试创建一个新的字符串并将其转换为您选择的字符串数组。

   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}).AsEnumerable().Select(x=> string.Format("{0} - {1}",x.ServerID, x.Name)).ToArray();

   string[] header = query;
Run Code Online (Sandbox Code Playgroud)