DbComparisonExpression requiert des arguments comparables types

Je suis nouveau à l'aide de Linq et suis en train de créer une recherche par numéro de dossier et afficher les résultats dans une nouvelle action de la vue. Lors de l'exécution du code, j'obtiens le message d'erreur "DbComparisonExpression requiert des arguments avec des types comparables". Je crois que cela a quelque chose à voir avec le type de recherche étant de la chaîne graphique et d'un numéro de type int, mais je ne suis pas sûr de la façon de résoudre le problème. Toute aide serait grandement appréciée!

Contrôleur:

public ActionResult Index(string searchTerm = null)
{
    var model =
        db.Patient
        .Where(r => searchTerm == null || r.ChartNumber.Equals(searchTerm))
                .Select(r => new NewListModel
                {
                    ChartNumber = r.ChartNumber,
                    FirstName = r.FirstName,
                    LastName = r.LastName,
                }
                );
    return View(model);
}

Modèle:

public class NewListModel
{
    public int ChartNumber { get; set; }

    public string FirstName { get; set; }
    public string LastName { get; set; }

}

Vue:

@model IEnumerable<Project.Models.NewListModel>
@{
    ViewBag.Title = "Home Page";
}

<form method="get">
    <input type="search" name="searchTerm" />
    <input type="submit" value="Search by Chart Number" />
</form>

@foreach (var item in Model)
{
    <div>
        <h4>@item.ChartNumber</h4>

    </div>
    <div>@item.FirstName</div>
    <div>@item.LastName</div>

}

Nouveau contrôleur

public ActionResult Index(string searchTerm = null)
        {
            int chartNo;
            if (searchTerm == null || Int32.TryParse(searchTerm, out chartNo)) {
            var model = db.Patient
            .Where(r => searchTerm == null || r.ChartNumber == chartNo)
            .Select(r => new NewListModel
                {
                    ChartNumber = r.ChartNumber,
                    FirstName = r.FirstName,
                    LastName = r.LastName,
                }
                );
             return View(model);
            } else {
                //Invalid number entered 
            }
            }
est ChartNumber un string ou Int? soit faire une bonne Casting ou utilisez la comparaison par exemple lorsque l'on compare des objets ressemblant à utiliser l'objet.D'égal à égal, autrement essayez de changer votre r.ChartNumber = Convert.ToInt32(searchTerm)
ou changer votre requête à utiliser == lorsque l'on fait la comparaison sur le côté gauche, l'EF ne semble pas prendre en compte votre type d'opérateurs de conversion.

OriginalL'auteur dc922 | 2014-04-21