我有一个一维的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 [] 那里。
答案 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();