我知道我可以将我的linq查询转换为数组或列表,但这似乎没有帮助。
这是我的问题:
var bracct = from DataRow x in _checkMasterFileNew.Rows
select new {BranchAccount = string.Format("{0}{1}", x["Branch"], x["AccountNumber"])};
当我尝试将其转换为列表或数组时:
List<string> tstx = bracct.ToList();
或者这个:
string[] stx = bracct.ToArray();
如果给我这个:
我假设我需要更改我的查询,但我不确定最好的方法来处理它。如何将其添加到字符串的泛型集合中?
答案 0 :(得分:3)
它不起作用,因为你创建了一个带有1个字符串属性的匿名类型。相反,如果您想要的只是将其转换为List<string>
执行:
var bracct = (from DataRow x in _checkMasterFileNew.Rows
select string.Format("{0}{1}", x["Branch"], x["AccountNumber"])).ToList();
如果使用c#6.0,您可以使用字符串插值:
var bracct = (from DataRow x in _checkMasterFileNew.Rows
select $"{x["Branch"]}{x["AccountNumber"]}").ToList();
答案 1 :(得分:1)
您的查询正在创建一个包含单个成员BranchAccount
的匿名类型。如果您实际上只想要一个string
,那么只需选择它:
var bracct =
from DataRow x in _checkMasterFileNew.Rows
select string.Format("{0}{1}", x["Branch"], x["AccountNumber"]);
现在,您的ToList()
来电将返回List<string>
:
List<string> tstx = bracct.ToList();
答案 2 :(得分:0)
在执行ToList()
之前,您必须选择要为其指定字符串的属性,或者直接删除匿名类型和select string.Format()
试试这个:
List<string> tstx = bracct.Select( x => x.BranchAccount ).ToList();