Asp.net mvc5 две совпадающие строки возвращают false?
Работая над проектом, в котором я сравниваю две строки, как бы ни совпадала строка, но по какой-то причине она возвращает false...
Вот код, который я пытаюсь запустить, чтобы сравнить:
@using (Html.BeginForm("Index", "Projects", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
{
var allProjects = ViewData["allProjects"] as List<Project>;
<h3>
<a href="#">Inhouse projekt</a>
</h3>
<div>
@{
Html.RenderPartial("Projects", allProjects.Where(x => x.ProjectStatu.Name == "Pågående - Inhouse"));
}
</div>
<h3>
<a href="#">Outhouse projekt</a>
</h3>
<div>
@{
Html.RenderPartial("Projects", allProjects.Where(x => x.ProjectStatu.Name == "Pågående - Outhouse"));
}
</div>
<h3>
<a href="#">Övriga projekt</a>
</h3>
<div>
@{
Html.RenderPartial("Projects", allProjects.Where(x => x.ProjectStatu.Name != "Pågående - Inhouse" && x.ProjectStatu.Name != "Pågående - Outhouse" && x.ProjectStatu.Name != "Avslutat"));
}
</div>
<h3>
<a href="#">Avslutade projekt</a>
</h3>
<div>
@{
Html.RenderPartial("Projects", allProjects.Where(x => x.ProjectStatu.Name == "Avslutat"));
}
</div>
<input type="submit" value="Spara" id="submit" name="submit" style="padding: 5px 20px 5px 20px; float: right;" />
}
}
Доказательство того, что две строки соответствуют друг другу, но возвращает false.
2 ответа
Решение
Вместо того, чтобы делать такое сравнение, вместо этого вы должны использовать string.Compare. Ссылка также включает в себя информацию о культуре, которая, вероятно, будет иметь отношение к вашему делу.
allProjects.Where(x => string.Compare(x.ProjectStatu.Name, {your string}, false, CultureInfo.InvariantCulture);
Я говорю это, потому что я легко мог видеть, что есть проблема с форматами Unicode двух строк. Это должно обойти это.
Попробуйте использовать allProjects.Where(x => x.ProjectStatu.Name.Contains("Inhouse"))