我有一个包含int和字符串的Simple Struct列表。
STRUCT:
public struct ErrorType
{
public int RowNumber;
public int ColumnNumber;
public string ErrorMessage;
}
On我的方法返回这些结构的列表。 我想将列表中的每个成员转换为其字符串形式,并用逗号分隔,以便List现在是一个字符串数组。我可以编写一个函数来手动执行此操作,但我更愿意使用linq来获得更清晰的解决方案。
拥有字符串数组我将使用
将其写入文件 string path = @"c:\temp\MyTest.txt";
// This text is added only once to the file.
if (!File.Exists(path))
{
// Create a file to write to.
List<ErrorType> ErrorTypesList = GetErrors();
//do some work to iterate over the members and do a string.join after
string[] ErrorListArray = ErrorTypesList.foreach( e => { });
File.WriteAllLines(path, createText);
}
是否有人建议如何填写foreach,以便以ToString形式返回每个成员后跟逗号?
答案 0 :(得分:1)
看起来你想要这样的东西:
string[] ErrorListArray = ErrorTypesList
.Select(e => string.Join(",", e.RowNumber, e.ColumnNumber, e.ErrorMessage))
.ToArray();
答案 1 :(得分:1)
你能够使用LINQ进行属性迭代的唯一方法是,如果你正在使用反射,除非你必须这样做,否则你不应该这样做(它真的没有&#39 ;看起来像你这样做。)
尽管如此,你所做的最好的事情仍然不是太糟糕。
var rows = ErrorTypesList
.Select(c => "\"" + string.Join("\",\"", c.RowNumber, c.ColumnNumber, c.ErrorMessage) + "\"");
File.WriteAllLines(path, rows);
我冒昧地将字段放在引号中,您可能会也可能不会想要,但是很容易修复该代码以执行您做想要的内容。您可能还想添加一些转义逻辑,等待c.ErrorMessage
可能包含的内容。
如果您对此更加满意,也可以使用string.Format
,但这并没有真正发挥作用。
var rows = ErrorTypesList
.Select(c => string.Format("\"{0}\", \"{1}\", \"{2}\"", c.RowNumber, c.ColumnNumber, c.ErrorMessage));