【问题标题】:Entity Framework error Cannot İmplicity convert type 'bool' to 'string'实体框架错误无法将类型“bool”转换为“字符串”
【发布时间】:2019-12-20 12:18:22
【问题描述】:

我想将 s.UrunNavigation.Uadi 与 Adi 同步,但它给出了这个错误

无法将类型'bool'隐式转换为'string'

无法将 lambda 表达式转换为委托类型 'System.Func' 因为有些返回 块中的类型不能隐式转换为委托 返回类型

public ActionResult UrunMiktarIcin(string Adi, string OcakUrun) 
{

    string reply;
    if (OcakUrun == "urun")
    {
         reply = _context.UrunMiktari
            .Include(u => u.HangiOcakNavigation)
            .Include(u => u.UrunNavigation)
            .Where(s => s.UrunNavigation.Uadi = Adi)
            .Select(u => new 
            { 
                UrunAdi = u.UrunNavigation.Uadi, 
                OcakAdi = u.HangiOcakNavigation.NeredekiOcak, 
                UrunSayisi = u.UMiktari
            });


    return Json();
}

我的 UrunMiktari 模型:

public partial class UrunMiktari
    {
        public int Id { get; set; }
        public int Urun { get; set; }
        public int UMiktari { get; set; }
        public int HangiOcak { get; set; }

        public virtual CayOcaklari HangiOcakNavigation { get; set; }
        public virtual Urunler UrunNavigation { get; set; }
    }

我的 Urunler 模型:

public partial class Urunler
    {
        public Urunler()
        {
            UrunCikis = new HashSet<UrunCikis>();
            UrunGiris = new HashSet<UrunGiris>();
            UrunMiktari = new HashSet<UrunMiktari>();
        }

        public int Id { get; set; }
        public string Uadi { get; set; }
        public decimal SatisFiyati { get; set; }
        public decimal AlisFiyati { get; set; }
        public bool AktifPasif { get; set; }
        public string Barcodu { get; set; }

        public virtual ICollection<UrunCikis> UrunCikis { get; set; }
        public virtual ICollection<UrunGiris> UrunGiris { get; set; }
        public virtual ICollection<UrunMiktari> UrunMiktari { get; set; }
    }

我尝试“s => s.UrunNavigation.Uadi == Adi”

reply = _context.UrunMiktari.Include(u =&gt; u.HangiOcakNavigation).Include(u =&gt; u.UrunNavigation).Where(s =&gt; s.UrunNavigation.Uadi == Adi).Select(u =&gt; new { UrunAdi = u.UrunNavigation.Uadi ,OcakAdi = u.HangiOcakNavigation.NeredekiOcak, UrunSayisi = u.UMiktari })

它给出了这个错误:

无法将类型'system.linq.iqueryable 隐式转换为'string'

【问题讨论】:

    标签: c# entity-framework model-view-controller


    【解决方案1】:
       _context.UrunMiktari.Include(u => u.HangiOcakNavigation).Include(u => u.UrunNavigation).Where(s => s.UrunNavigation.Uadi == Adi).Select(u => new { UrunAdi = u.UrunNavigation.Uadi ,OcakAdi = u.HangiOcakNavigation.NeredekiOcak, UrunSayisi = u.UMiktari })
    

    返回 IEnumerable&lt;{ UrunAdi, OcakAdi, UrunSayisi }&gt; 类型,而不是 string 类型。

    您好像要返回一个 json 数组?

    试试这个

    public ActionResult UrunMiktarIcin(string Adi, string OcakUrun) 
    {
    
       if (OcakUrun == "urun")
       {
          var reply = _context.UrunMiktari
             .Include(u => u.HangiOcakNavigation) // this is not necessary because manually projecting
             .Include(u => u.UrunNavigation) // this is not necessary because manually projecting
             .Where(s => s.UrunNavigation.Uadi == Adi) // Had a single `=`, need `==`.
             .Select(u => new 
             { 
                 UrunAdi = u.UrunNavigation.Uadi,
                 OcakAdi = u.HangiOcakNavigation.NeredekiOcak, 
                 UrunSayisi = u.UMiktari 
             });
          return Json(reply);
       }
    
       return Json();
    }
    

    你还有一个赋值操作 (=),你需要一个比较操作 (==)。

    【讨论】:

    • 非常感谢它成功了,但 .Where(s =&gt; s.UrunNavigation.Uadi == Adi) 应该是
    猜你喜欢
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多