C# 我需要计算解析Json后通过循环得到的值的总数,但可以';t使其与控制台应用程序一起工作)

C# 我需要计算解析Json后通过循环得到的值的总数,但可以';t使其与控制台应用程序一起工作),c#,json.net,C#,Json.net,我需要计算售出的图书数量,每本售出的图书都有一个状态:“已售出”(在JSON上)。 这就是我正在做的 1.我用这段代码解析数据,它工作得很好: RootObject myObj = JsonConvert.DeserializeObject<RootObject>(json); 那我打错电话了。我想学习如何使用Console应用程序实现这一点,这样我就不必使用ListBox并计算其项目。您可以使用以下linq查询: totalbooks = myObj.books.Count(bo

我需要计算售出的图书数量,每本售出的图书都有一个状态:“已售出”(在JSON上)。 这就是我正在做的

1.我用这段代码解析数据,它工作得很好:

RootObject myObj = JsonConvert.DeserializeObject<RootObject>(json);

那我打错电话了。我想学习如何使用Console应用程序实现这一点,这样我就不必使用ListBox并计算其项目。

您可以使用以下linq查询:

totalbooks = myObj.books.Count(book => book.status == "sold");

您可以使用以下linq查询:

totalbooks = myObj.books.Count(book => book.status == "sold");

将if嵌套到for循环中并再次测试。

将if嵌套到for循环中并再次测试。

交换
for
if
语句:

int soldBooksCount = 0;
foreach(var book in myObj.books) {
    if (book.status == "sold") {
        soldBooksCount++;
    }
}
label2.Text = soldBooksCount.ToString();
或者您可以使用:

using System.Linq;
// ...
label2.Text = myObj.books
    .Where(book => book.status == "sold") // filters all books with status "sold"
    .Count()                              // and counts them
    .ToString();

有关和,请参阅文档。

交换
以获得
如果
语句:

int soldBooksCount = 0;
foreach(var book in myObj.books) {
    if (book.status == "sold") {
        soldBooksCount++;
    }
}
label2.Text = soldBooksCount.ToString();
或者您可以使用:

using System.Linq;
// ...
label2.Text = myObj.books
    .Where(book => book.status == "sold") // filters all books with status "sold"
    .Count()                              // and counts them
    .ToString();

查看文档中的和。

切换
if
for
-循环浏览所有书籍,然后查看是否已售出
totalbooks=
将覆盖totalbooks的值。您可能希望将
totalbooks+=
添加到另一个:如果
status
可以
“出售”
,那么
status.Count()
将返回字符串中的字符数(对于“出售”这将是4个)。是的,根据这里提供的所有答案,我意识到了我的错误并学到了一些新的东西。谢谢大家!切换
if
for
-循环浏览所有书籍,然后查看它是否已售出
totalbooks=
将覆盖totalbooks的值。您可能希望将
totalbooks+=
添加到另一个:如果
status
可以
“出售”
,那么
status.Count()
将返回字符串中的字符数(对于“出售”这将是4个)。是的,根据这里提供的所有答案,我意识到了我的错误并学到了一些新的东西。谢谢大家!