gpt4 book ai didi

c# - 为什么不允许 Array.Count 作为自己的索引值?

转载 作者:行者123 更新时间:2023-11-30 19:05:27 25 4
gpt4 key购买 nike

我需要按字母顺序对值进行排序 (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

...但是正如您在评论中看到的那样,我最初尝试使用字符串数组的计数失败了;我被骂到让我困惑的错误消息“运算符'-'不能应用于'方法组'和'int'类型的操作数

什么?!? invNums.Count 与 DeliveredItems.Count 不是一回事吗?为什么后者有效而前者无效?

更新

所以我的代码现在是这样的:

beginningInvoiceNum = invNums.First();
endingInvoiceNum = invNums.Last();

...对此我很高兴,就像一只未烤过的蛤蜊。

最佳答案

invNums 是数组,它没有 Count 属性(如列表)。你应该使用它的 Array.Length属性

invNums[invNums.Length - 1]

Enumerable.Count() IEnumerable 的扩展(实际上编译器认为您正在尝试使用此扩展,但您尝试使用方法组而不是执行方法):

invNums[invNums.Count() - 1]

实际上在后一种情况下你可以使用 Enumerable.Last()扩展名:

invNums.Last()

关于c# - 为什么不允许 Array.Count 作为自己的索引值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22056370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com