我正在研究一种从API获取一组测试的名称和ID的解决方案。找到并返回所有数据,因为我可以在Visual Studio的“输出”窗口中看到数据。
// method to get the test names and id numbers
public List<Asset> GetTests()
{
var assetType = _context.MetaModel.GetAssetType("Test");
var query = new Query(assetType);
var nameAttribute = assetType.GetAttributeDefinition("Name");
query.Selection.Add(nameAttribute);
var result = _context.Services.Retrieve(query);
result.Assets.ForEach(test =>
LogResult(test.Oid.Token,
GetValue(test.GetAttribute(nameAttribute).Value)));
return result.Assets;
}
我有两个其他方法,一个用于检查空值,另一个用于在Visual Studio中将输出显示到“输出”窗口。
private static string GetValue(object value)
{
return value == null ? "No Value Available" : value.ToString();
}
private static void LogResult(params string[] results)
{
foreach (var result in results)
{
System.Diagnostics.Debug.Write(result);
}
}
当我单步执行代码时,我看到两个值(id号和测试名称)成功显示在控制台窗口中。数据在输出窗口中显示为一行。
Test:1142Sample: Login Criterion Test:1147Sample: Add Customer Details CriterionTest:1153Sample: Add Customer Header
当然,如果我写到控制台,结果都是乱七八糟的。
如何在控制台窗口中显示结果:
Test:1142 Name: Login Criterion
Test:11475 Name: Add Customer Details
Test:1153 Name: Add Customer Header
基本上,输出是正确的,但我想格式化数据以在控制台窗口中整齐地显示。
我在这里看到一个例子http://www.dotnetperls.com/console-writeline,但看起来您必须知道将返回多少个值才能正确格式化显示。你会使用数组来实现这个目标吗?
static void Main()
{
string value1 = "Dot";
string value2 = "Net";
string value3 = "Perls";
Console.WriteLine("{0}, {1}, {2}", // <-- This is called a format string.
value1, // <-- These are substitutions.
value2,
value3);
}
答案 0 :(得分:5)
确保使用WriteLine
而不是Write
。您可以直接在ForEach
委托中执行此操作,如下所示:
result.Assets.ForEach(test =>
Console.WriteLine("Test:{0,-9}Name: {1}",
test.Oid.Token,
GetValue(test.GetAttribute(nameAttribute).Value)));
注意:格式字符串中的-9
指定输出中该字符串的宽度。它将该参数填充最多9个空格,以便第二个字符串正确对齐。
答案 1 :(得分:4)
您可以使用此
foreach (var result in results)
{
System.Diagnostics.Debug.Write(result + Environment.NewLine);
}
或者
foreach (var result in results)
{
System.Diagnostics.Debug.WriteLine(result);
}
或p.s.w.g
答案也非常好。
答案 2 :(得分:1)
您还可以尝试使用Debug.Print
和String.Format
:
foreach (string result in results)
{
Debug.Print(string.Format("{0, -14} {1}", test.Oid.Token,
GetValue(test.GetAttribute(nameAttribute).Value)));
}