【发布时间】:2014-02-27 00:10:21
【问题描述】:
我需要按字母顺序对值进行排序(invoice_no/invoiceNum)。我有以下代码可以做到这一点:
string beginningInvoiceNum = string.Empty;
string endingInvoiceNum = string.Empty;
. . .
XDocument doc = XDocument.Parse(stringifiedXML);
var DeliveredItems = doc.Descendants("DSD").Select(delItem => new
{
lineID = delItem.Element("line_id").Value,
invoiceNum = delItem.Element("invoice_no").Value,
UPCCode = delItem.Element("upc_code").Value,
desc = delItem.Element("description").Value,
. . .
}).ToList();
string[] invNums = new string[DeliveredItems.Count];
int i = 0;
foreach (var delItem in DeliveredItems)
{
invNums[i] = delItem.invoiceNum;
i++;
}
Array.Sort(invNums);
beginningInvoiceNum = invNums[0];
//endingInvoiceNum = invNums[invNums.Count - 1]; <= this does not work
endingInvoiceNum = invNums[DeliveredItems.Count-1]; // <= this works
...但是正如您在 cmets 中看到的,我最初尝试使用字符串数组的计数失败了;我被责骂了令人困惑的错误消息“运算符'-'不能应用于'方法组'和'int'类型的操作数”
什么?!? invNums.Count 和 DeliveredItems.Count 不是一回事吗?为什么后者有效而前者失败?
更新
所以我的代码现在是这样的:
beginningInvoiceNum = invNums.First();
endingInvoiceNum = invNums.Last();
...我对此感到很高兴。
【问题讨论】:
标签: c# sorting generic-list arrays indexer