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"))

Другие вопросы по тегам