In case you't interested, here's a version using the query syntax instead as well
var accounts = from a in accountList
where (a.acctnbr.StartsWith("L") || a.acctnbr.StartsWith("P"))
&& (a.acctnbr.Length == 6)
select a.acctnbr;
var csv = String.Join("," accounts.ToArray());
Based on the comment you added regarding which solution is better, mine or Cybernate. The solutions are the same, C# let's you write queries in two ways. You can take a look at LINQ Query Syntax versus Method Syntax (C#) for more information.
Relevant bit from ducumentation (though I would strongly urge you to read up more on Linq)
In general, we recommend query syntax because it is usually simpler and more readable; however there is no semantic difference between method syntax and query syntax. In addition, some queries, such as those that retrieve the number of elements that match a specified condition, or that retrieve the element that has the maximum value in a source sequence, can only be expressed as method calls.
L1234512is more than 6 characters, do you want the account number truncated to six characters or is it just a typo?