2

次のような1次元の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});

クエリ結果を 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 プロパティを持つ匿名型のリスト/queryable を作成します。

AsEnumerable() --> SQL to LINQ は string.Format をサポートしていないため、string.Format を使用できるように Enumerable に変換します。

Select(x => string.Format("{0} - {1}", x.ServerID, x.Name)) --> ServerID と Name を使用して String のリストを作成するために Select を実行します

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 に答える
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 に答える