C# 在Umbraco自定义控制器中if语句如何始终返回true?
我有下面的foreach循环,当然不是最好的解决方案(在循环中使用模型),但是在以后的日子里,它将在最佳实践/性能上发挥作用,但是如果可能的话,我只是想让它发挥作用 我可以确认postAuthor正在接收一个模型并且不为null,两个int值的比较是相等的,尽管我不确定如何将值输出到console或其他(c#noob) 我似乎得到了所有的结果,而不仅仅是那些与当前所选作者具有相同作者id的帖子 如有任何建议/帮助,将不胜感激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 (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)代码>-您可能会收到错误,因为您更改了正在循环的集合。通过在另一个集合中收集匹配的帖子来解决此问题。您可能会因为更改了正在循环的集合而出错。通过收集另一个集合中匹配的帖子来解决此问题。