Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Umbraco自定义控制器中if语句如何始终返回true?_C#_Visual Studio_Umbraco_Umbraco7 - Fatal编程技术网

C# 在Umbraco自定义控制器中if语句如何始终返回true?

C# 在Umbraco自定义控制器中if语句如何始终返回true?,c#,visual-studio,umbraco,umbraco7,C#,Visual Studio,Umbraco,Umbraco7,我有下面的foreach循环,当然不是最好的解决方案(在循环中使用模型),但是在以后的日子里,它将在最佳实践/性能上发挥作用,但是如果可能的话,我只是想让它发挥作用 我可以确认postAuthor正在接收一个模型并且不为null,两个int值的比较是相等的,尽管我不确定如何将值输出到console或其他(c#noob) 我似乎得到了所有的结果,而不仅仅是那些与当前所选作者具有相同作者id的帖子 如有任何建议/帮助,将不胜感激 foreach (var post in posts)

我有下面的foreach循环,当然不是最好的解决方案(在循环中使用模型),但是在以后的日子里,它将在最佳实践/性能上发挥作用,但是如果可能的话,我只是想让它发挥作用

我可以确认postAuthor正在接收一个模型并且不为null,两个int值的比较是相等的,尽管我不确定如何将值输出到console或其他(c#noob)

我似乎得到了所有的结果,而不仅仅是那些与当前所选作者具有相同作者id的帖子

如有任何建议/帮助,将不胜感激

        foreach (var post in posts)
        {
            var postAuthor = new AuthorModel(umbracoHelper.TypedContent(authorId), CultureInfo.CurrentCulture, umbracoHelper);
            int postAuthorId = postAuthor.AuthorId;

            if (postAuthorId != authorId)
            {
                posts.Remove(post);
            }
        }

你有你的for循环。在这个for循环中,两条语句

var postAuthor = new AuthorModel(umbracoHelper.TypedContent(authorId), CultureInfo.CurrentCulture, umbracoHelper);
int postAuthorId = postAuthor.AuthorId;
不应该放在那里:它们不依赖于您的var post,因此在每次迭代中,它们将具有相同的值

if语句将postAuthorId(其值始终与我前面所说的相同)与authorId进行比较,authorId未分配给for循环中的任何值

您可能想做的是:

if (postAuthorId != post.authorId) {//do stuff}
我不理解代码的用途:postAuthorId将始终等于authorId,因为您使用第二个定义了第一个

您的代码似乎“思考错误”


希望我能帮忙。

你有你的for循环。在这个for循环中,两条语句

var postAuthor = new AuthorModel(umbracoHelper.TypedContent(authorId), CultureInfo.CurrentCulture, umbracoHelper);
int postAuthorId = postAuthor.AuthorId;
不应该放在那里:它们不依赖于您的var post,因此在每次迭代中,它们将具有相同的值

if语句将postAuthorId(其值始终与我前面所说的相同)与authorId进行比较,authorId未分配给for循环中的任何值

您可能想做的是:

if (postAuthorId != post.authorId) {//do stuff}
我不理解代码的用途:postAuthorId将始终等于authorId,因为您使用第二个定义了第一个

您的代码似乎“思考错误”


希望我能提供帮助。

请注意,以下代码查找具有给定节点id的Umbraco实体:

umbracoHelper.TypedContent(authorId)
因此,您的变量
authorId
引用了一个节点id,我假设
postAuthorId
引用了AuthorModel上的一个属性,因此结果有所不同

如果您将代码更改为以下内容,它可能会正常工作

foreach (var post in posts)
{
        // Assuming post is an IPublishedContent
        var postAuthor = new AuthorModel(post, CultureInfo.CurrentCulture, umbracoHelper);
        int postAuthorId = postAuthor.AuthorId;

        if (postAuthorId != authorId)
        {
            posts.Remove(post);
        }
    }

请注意,以下代码查找具有给定节点id的Umbraco实体:

umbracoHelper.TypedContent(authorId)
因此,您的变量
authorId
引用了一个节点id,我假设
postAuthorId
引用了AuthorModel上的一个属性,因此结果有所不同

如果您将代码更改为以下内容,它可能会正常工作

foreach (var post in posts)
{
        // Assuming post is an IPublishedContent
        var postAuthor = new AuthorModel(post, CultureInfo.CurrentCulture, umbracoHelper);
        int postAuthorId = postAuthor.AuthorId;

        if (postAuthorId != authorId)
        {
            posts.Remove(post);
        }
    }

其中是if语句中使用的authorId的定义?@LeonardoAlvesMachado在循环之外,因为变量不会更改,但authorId等于要在控制台上写入的当前模型(int authorId=authorModel.authorId;):
console.WriteLine(valueString)
-if语句中使用的authorId的定义在哪里?@LeonardoAlvesMachado在循环之外,因为变量不会更改,但authorId等于要在控制台上写入的当前模型(int authorId=authorModel.authorId;):
console.WriteLine(valueString)-您可能会收到错误,因为您更改了正在循环的集合。通过在另一个集合中收集匹配的帖子来解决此问题。您可能会因为更改了正在循环的集合而出错。通过收集另一个集合中匹配的帖子来解决此问题。