将linq查询转换为通用字符串数组

时间:2016-09-02 13:55:38

标签: c# linq generics

我知道我可以将我的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();

如果给我这个:

enter image description here

我假设我需要更改我的查询,但我不确定最好的方法来处理它。如何将其添加到字符串的泛型集合中?

3 个答案:

答案 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();