简体   繁体   中英

Convert linq query to Generic string array

I know that I can cast my linq query to an array or list but this doesn't seem to help.

Here is my query:

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

When I attempt to convert it to a list or array:

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

or this:

string[] stx = bracct.ToArray();

If give me this:

在此处输入图片说明

I am assuming I need to change my query but I'm not sure the best way to hanlde it. How do I get it to a generic collection of strings?

It won't work because you've created an anonymous type with 1 property which is a string. Instead, If all you want is to convert it into a List<string> do:

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

And if using c# 6.0 you can use string interpolation:

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

Your query is creating an anonymous type with a single member BranchAccount . If you actually just want a string , then just select that instead:

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

And now your ToList() call will return List<string> :

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

You must select the property you are assigning the string to before performing ToList() , or remove the anonymous type and select string.Format() directly

Try this:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM