C# 在C中的网格中显示LINQ查询结果的问题
我在这里收到了一些关于以下LINQ查询的帮助,但我仍然在努力解决它。我试图获得的结果是在DataGridView控件中显示xml文件中的一些属性及其值。我通过单击按钮调用我的方法,并尝试传回列表以在网格中显示。以下是该行的一个示例:C# 在C中的网格中显示LINQ查询结果的问题,c#,linq,C#,Linq,我在这里收到了一些关于以下LINQ查询的帮助,但我仍然在努力解决它。我试图获得的结果是在DataGridView控件中显示xml文件中的一些属性及其值。我通过单击按钮调用我的方法,并尝试传回列表以在网格中显示。以下是该行的一个示例: <z:row CenterCode="JAX" CenterName="Jacksonville" Version="1.0" NextExport="66742" NextImport="29756" LastImportTime="2015-06-10T1
<z:row CenterCode="JAX" CenterName="Jacksonville" Version="1.0" NextExport="66742" NextImport="29756" LastImportTime="2015-06-10T14:48:33" FtpProxyServer="" FtpUserName="" FtpPassword="" ResetImportID="False"/>
我需要选择这个和其他4个。我还收到一个转换错误-无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic.List”。感谢您的指点帮助。您可以使用匿名类型:
var attributes =
elementQuery.Select(e => new
{
CenterName = (string)e.Attribute["CenterName"],
Version = (string)e.Attribute["Version"],
// more attributes
}).ToList();
但是,您不能以一种有用的方式从该方法返回该值。因此,如果确实需要将属性名称和属性值都作为字符串,请尝试以下方法:
var attributes =
elementQuery.Select(e => new []
{
Tuple.Create("CenterName", (string)e.Attribute["CenterName"]),
Tuple.Create("Version", (string)e.Attribute["Version"]),
// more attributes
}).SelectMany(x => x).ToList();
方法的返回类型现在必须是List
最后,如果您确实需要一个列表作为返回类型,请使用以下代码:
var attributes =
elementQuery.Select(e => new []
{
new [] { "CenterName", (string)e.Attribute["CenterName"] },
new [] { "Version", (string)e.Attribute["Version"] },
// more attributes
}).SelectMany(x => x).ToList();
我解决了自己的问题。以下是我所做的: 为所需的属性创建了一个类:
public class dataRow
{
public string CenterName { get; set; }
public string CenterCode { get; set; }
public string NextImport { get; set; }
public string NextExport { get; set; }
public string LastImportTime { get; set; }
}
将结果选择到其中:
List<dataRow> dataRows = elementQuery.Select( e => new dataRow
{ CenterName = (string)e.Attribute("CenterName"),
CenterCode = (string)e.Attribute("CenterCode"),
NextImport = (string)e.Attribute("NextImport"),
NextExport = (string)e.Attribute("NextExport"),
LastImportTime = (string)e.Attribute("LastImportTime") }).ToList();
我能用匿名类型填充网格吗?这导致以下问题:无法将[]索引应用于“方法组”类型的表达式@Brian:很可能是,但您无法轻松从方法返回它。请检查我的更新以了解其他方法。
var attributes =
elementQuery.Select(e => new []
{
new [] { "CenterName", (string)e.Attribute["CenterName"] },
new [] { "Version", (string)e.Attribute["Version"] },
// more attributes
}).SelectMany(x => x).ToList();
public class dataRow
{
public string CenterName { get; set; }
public string CenterCode { get; set; }
public string NextImport { get; set; }
public string NextExport { get; set; }
public string LastImportTime { get; set; }
}
List<dataRow> dataRows = elementQuery.Select( e => new dataRow
{ CenterName = (string)e.Attribute("CenterName"),
CenterCode = (string)e.Attribute("CenterCode"),
NextImport = (string)e.Attribute("NextImport"),
NextExport = (string)e.Attribute("NextExport"),
LastImportTime = (string)e.Attribute("LastImportTime") }).ToList();
public static List<dataRow> MonitorCounts(string upperLimit)
dataGridView1.DataSource = xmlProcessing.MonitorCounts(tbxUpperLimit.Text.ToString());
return dataRows;