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

时间:2013-06-14 10:22:53

标签: 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;
        }
    }        

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

   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()扩展名创建一个字符串List,并将其转换为字符串数组 选择新的{a.ServerID,b.Name} - >创建一个具有ServerID和Name属性的匿名类型的list / iqueryable。

AsEnumerable() - >将它转换为Enumerable所以我们可以使用string.Format,因为SQL到LINQ不支持string.Format

选择(x => string.Format(“{0} - {1}”,x.ServerID,x.Name)) - >执行选择以使用ServerID和名称

创建String列表

ToArray() - >只需将其转换为String [] 那里。

3 个答案:

答案 0 :(得分:5)

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

   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;

答案 1 :(得分:2)

  

LINQ中仅支持无参数构造函数和初始值设定项   实体。

使用:

....
on a.ServerID equals b.ServerID
select new GetList { ServerID = a.ServerID, Name = b.Name});

答案 2 :(得分:1)

这将返回一个对象GetList

的数组
 select new GetList(a.ServerID, b.Name)).ToArray();

如果要返回字符串数组,请选择要作为字符串数组

返回的字段
 select new GetList(b.Name)).ToArray();

select new GetList(a.Server + b.Name)).ToArray();