2017-06-07 1 views
0

intは含まれてい「の定義が含まれていない 『』と最高の拡張メソッドのオーバーロード 『Queryable.Contains(のIQueryable、文字列)』タイプの受信機を必要とする」のIQueryableのIQueryable変換はint - はsortOrderとFiltring

これは、コントローラのコードの一部です:

 var projects = db.Projects.Include(p => p.Engineer).Include(p => p.SiteLocation); 

     // var projects = from p in db.Projects 
     // select p; 

     if (!String.IsNullOrEmpty(searchString)) 
     { 
      projects = projects.Where(p => p.NumberMCP.Contains(searchString) 
      || p.nameProject.Contains(searchString) || 
      p.Ptype.Contains(searchString) || p.EngineerID.Contains(searchString)); 
     } 

プロジェクトモデル

public partial class Project 
{ 
    public int ProjectID { get; set; } 
    [DisplayName("MCP")] 
    [Required(ErrorMessage = "NumberMCP es requerido")] 
    public string NumberMCP { get; set; } 
    [DisplayName("Ingeniero")] 
    [Required(ErrorMessage = "Tarjeta Ingeniero es requerido")] 
    public int EngineerID { get; set; } 
    [DisplayName("Localidad")] 
    [Required(ErrorMessage = "ID Localidad es requerido")] 
    public int SiteLocationID { get; set; } 
    [DisplayName("Descripción")] 
    [Required(ErrorMessage = "Descripción es requerido")] 
    public string nameProject { get; set; } 
    [DisplayName("Tipo Proyecto")] 
    [Required(ErrorMessage = "Tipo Proyecto es requerido")] 
    public string Ptype { get; set; } 
    [DisplayName("Año")] 
    [Required(ErrorMessage = "Año es requerido")] 
    public Nullable<int> Pyear { get; set; } 
    [DisplayName("Link del Proyecto")] 
    [Required(ErrorMessage = "Link del Proyecto")] 
    public string Plink { get; set; } 

    public virtual Engineer Engineer { get; set; } 
    public virtual SiteLocation SiteLocation { get; set; } 
} 

}

+0

は、あなたがプロジェクトのためにモデルを追加することはできますか? –

+0

はい、もちろんです。 – Agar

+0

@Chris Prattのソリューションは正確に見えます。あなたはそれに問題がありますか? –

答えて

1

使用int.TryParseと文字通りint型にint型を比較します

if (!String.IsNullOrEmpty(searchString)) 
{ 
    int searchInt = 0; 
    var isInt = int.TryParse(searchString, out searchInt); 

    projects = projects.Where(p => 
      (isInt && p.NumberMCP == searchInt) || 
      (!isInt && p.nameProject.Contains(searchString)) || 
      (!isInt && p.Ptype.Contains(searchString)) || 
      (isInt && p.EngineerID == searchInt) 
    ); 
}