2016-09-02 6 views
-1

私はlinqクエリを配列やリストにキャストできますが、これは役立たないようです。ここでlinqクエリを汎用文字列に変換する

は私のクエリです:

var bracct = from DataRow x in _checkMasterFileNew.Rows 
    select new {BranchAccount = string.Format("{0}{1}", x["Branch"], x["AccountNumber"])}; 

私はリストや配列に変換しようとすると:私はこれを与える場合

string[] stx = bracct.ToArray(); 

List<string> tstx = bracct.ToList(); 

か、この:

enter image description here

私は自分のクエリを変更する必要があると仮定していますが、私はそれを最も良い方法で確認することはできません。それを一般的な文字列のコレクションにするにはどうすればよいですか?

+0

なぜdownvote?この質問には何も問題はありません。それは明らかであり、十分な情報を提供します。最近、人々はすべてを投票しています。 – ErocM

答えて

1

あなたのクエリでは、と匿名型を作成していますシングルメンバーBranchAccount

var bracct = 
    from DataRow x in _checkMasterFileNew.Rows 
    select string.Format("{0}{1}", x["Branch"], x["AccountNumber"]); 

をそして今、あなたのToList()呼び出しがList<string>が返されます:あなたが実際にちょうどstringをしたい場合は、だけではなく、それを選択し

List<string> tstx = bracct.ToList(); 
+0

これは私が必要としていたものです。 Tyvm! – ErocM

0

あなたはToList()を実行する前に、あなたがに文字列を代入しているプロパティを選択、または匿名型を削除する必要がありますし、select string.Format()直接

はこれを試してみてください:

List<string> tstx = bracct.Select(x => x.BranchAccount).ToList(); 
+0

これは技術的に私の問題を解決しますが、より良い方法はGiladとCharlesによって与えられた答えだろうと信じています。 – ErocM

3

あなたは匿名型を作成しましたので、それが動作しません文字列である1つのプロパティを持つ。代わりに、あなたが望むすべてがそうList<string>に変換する場合:

var bracct = (from DataRow x in _checkMasterFileNew.Rows 
       select string.Format("{0}{1}", x["Branch"], x["AccountNumber"])).ToList(); 

そして、あなたは、文字列の補間を使用することができます#6.0 cを使用している場合

var bracct = (from DataRow x in _checkMasterFileNew.Rows 
       select $"{x["Branch"]}{x["AccountNumber"]}").ToList(); 
+0

linqクエリで補間を試みたことがありますか?つまり、実際に 'String.Format()'を使用しているので、$ {x ["Branch"]} {x ["AccountNumber"]} 'を選択すると動作します。 – uTeisT

+0

@uteist - 答えの一部をコンパイラがテストするのではなく、コンパイラが正しく認識しているので、正常であると仮定します。そして、文字列の補間は基本的にはstring.format –

+1

です。これでよりエレガントに見えます。私に+1 :) – uTeisT

関連する問題