2017-05-02 9 views
-1

にオブジェクトのリストを変換するようタプル配列とオブジェクト定義されたのリストを持っている:私はタプルアレイにList<Tele>に存在する値を割り当てることにしたいタプル配列

Tuple<string, string, string>[] phone_type 
List<Tele> telecomm 

public class Tele 
{ public string number; 
    public string displayNumber; 
    public string type; 
} 

。以下のコードは動作しません。

obj.phone_type[0] = (Tuple<string,string,string>) obj1.telecommunication[0]; 

エラーがListタプル配列にリストの/全ての要素/ sの特定を割り当てるクリーンな方法はあり

Tuple<string,string,string>に変換することはできません、キャストは冗長であると言います。

答えて

5

持つ:

はあなたが試すことができます。

List<Tele> telecomm = //a list of Teles 

Tuple<string, string, string>[] phone_type = 
    telecomm.Select(i => new Tuple<string, string, string>(i.number, i.displayNumber, i.type)) 
      .ToArray(); 

EDIT:はまた、あなたが改善のための@Kyleコメントを見てみたいことがあります。

+1

することができます代わりに 'Tuple.Create(i.number、i.displayNumber、i.type)'を使用して型引数を 'Tuple'コンストラクタに指定する必要がありません。 – Kyle

+0

@Kyle Good。私は自分の答えを更新しました。 –

+0

@HosseinNarimaniRad。本当にありがとう。これで解決します。 – Mathew

0

いつでもTeleにメソッドを追加できます。それは一度だけ書く必要があります。

public Tuple<string, string, string> ToTuple() { 
    return new Tuple<string, string, string>(number, displayNumber, type); 
} 

はその後、配列を移入するために、それだけでホセインからの答えのようだ:

telecom.Select(t => t.ToTuple()).ToArray(); 
0

C#は今ValueTupleをネイティブでサポートしているので、あなたも使用することができます。

var phone_type = telecom.Select(t => (t.number, t.displayNumber, t.type)).ToArray(); 
関連する問題