繁体   English   中英

如何在C#中加入

[英]How to do a Join in C#

在默认情况下,如何使用Entity Framework在C#中执行Join的数据库-首先,因为我正坐在数据库中进行此查询

public List <clsModel> list ()
{
    strQuery = "select mode.modModel, bra.braIdBrand from tblModel mode join tblBrand bra on bra.braIdBrand = mode.braIdBrand";
    List <clsModel> lstModel = db.Database.SqlQuery <clsModel> (strQuery) .ToList ();

    return lstModel;
}

但是它总是会给出这个错误

附加信息:数据读取器与指定的“ CadastroAtivo.Models.clsModelo”不兼容。 类型“ modIdModelo”的成员在数据读取器中没有具有相同名称的对应列。

我想将模板各自的标签放在一起,但是只有模板和标记为空白(空),我不知道为什么。

类模型:

public class clsModel
    {
        [Key]
        public int modIdModel {get; set; }

        [Required (ErrorMessage = "Enter Template Name")]
        [StringLength (40, ErrorMessage = "BigName!")]
        [MinLength (3, ErrorMessage = "Enter a name with at least 3 digits")]
        [Display (Name = "Model")]
        public string modModel {get; set; }

        [Display (Name = "Mark")]
        [Required (ErrorMessage = "Select brand")]
        public int braIdBrand {get; set; }
        [ForeignKey ("braIdBrand")]
        public clsBrand Brand {get; set; }

    }

类品牌:

public class clsBrand
    {
        [Key]
        public int braIdBrand {get; set; }

        [Required (ErrorMessage = "Report a brand"]]
        [Display (Name = "Brand")]
        [StringLength (50, ErrorMessage = "BigName!")]
        [MinLength (3, ErrorMessage = "Tag name is short")]
        public string braBrand {get; set; }

        public virtual ICollection <clsModel> Model {get; set; }
    }

有谁能够帮助我?

对dbcontext进行疯狂的假设,但是您可以尝试以下操作:

var results = from model in db.clsModels
    join brand in db.clsBrands on model.brand equals brand into g
    select new { Model = model, Brands = g };

(目前无法在我的工作站或dbcontext上进行测试,但希望您能理解)

使用Linq的优点是它是强类型的。 您可以在编译期间轻松找到错误。

您是否尝试过:

public List<clsModel> list()
{
    strQuery = "select mode.modModel, bra.braIdBrand from tblModel mode join tblBrand bra on bra.braIdBrand = mode.braIdBrand";
    IEnumerable<clsModel> result = db.ExecuteQuery<clsModel> (strQuery);
    return result.ToList();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM