2

我有一个一维字符串 [] 数组如下

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});

如何将查询结果插入到 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();

我得到的结果是 ServerID 和 Names 的列表

更新

这是标记答案的解释..

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

AsEnumerable() --> 将其转换为 Enumerable 以便我们可以使用 string.Format 因为 SQL to LINQ 不支持 string.Format

Select(x => string.Format("{0} - {1}", x.ServerID, x.Name)) --> 执行 Select 以使用 ServerID 和名称创建字符串列表

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

4

3 回答 3

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;
于 2013-06-14T10:31:30.300 回答
2

LINQ to Entities 仅支持无参数构造函数和初始化程序。

利用:

....
on a.ServerID equals b.ServerID
select new GetList { ServerID = a.ServerID, Name = b.Name});
于 2013-06-14T10:38:30.350 回答
1

这将返回一个对象数组GetList

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

如果要返回字符串数组,则选择要作为字符串数组返回的字段

 select new GetList(b.Name)).ToArray();

或者

select new GetList(a.Server + b.Name)).ToArray();
于 2013-06-14T10:26:34.777 回答