複数のテーブルデータを返す場合のEFlinqテーブルジョイントクエリ、メインテーブルはより多くのフィールドを返し、他のテーブルはより少ないフィールドを返しますIQueryable <T>、カスタムタイプT

linqテーブルのジョイントチェックは、多くの状況に適した結果クラスのカプセル化を返します

 /// <summary>
    /// 表联查显示,扩展字段显示,适用于IQueryable<T> 返回数据,
    /// 当主要使用一个表字段,联查的其他表字段较少时,比较适用
    /// </summary>
    /// <typeparam name="T">泛型</typeparam>
    public class ViewData<T>
    {
    
    
        /// <summary>
        /// 实体
        /// </summary>
        public T model {
    
     get; set; }

        /// <summary>
        /// 扩展字段
        /// </summary>
        public string C1 {
    
     get; set; }

        /// <summary>
        /// 扩展字段
        /// </summary>
        public string C2 {
    
     get; set; }
        public string C3 {
    
     get; set; }
        public string C4 {
    
     get; set; }
        public string C5 {
    
     get; set; }
        public string C6 {
    
     get; set; }
        public string C7 {
    
     get; set; }
        public string C8 {
    
     get; set; }
    }

メイン表示フィールドクラスDown_img_record

/// <summary>
/// 下载记录
/// </summary>
[Serializable]
public partial class Down_img_record 
{
    
    
	/// <summary>
	/// guid主键
	/// </summary>
	[Key]
	public string Id {
    
     set; get; }
	
	/// <summary>
	/// 下载图片主键
	/// </summary>
	public string Img_id {
    
     get; set; }
	
	/// <summary>
	/// 下载图片时间
	/// </summary>
	public DateTime Down_time {
    
     get; set; }
	
	/// <summary>
	/// 下载人
	/// </summary>
	public string Down_user_id {
    
     get; set; }
	
	/// <summary>
	/// 用途说明
	/// </summary>
	public string Remark {
    
     get; set; }
	
	/// <summary>
	/// 年份
	/// </summary>
	public int Year {
    
     get; set; }
	
			
}

linqジョイントチェックリファレンス

 /// <summary>
		/// 联查下载人姓名,部门
		/// </summary>
		/// <returns></returns>
        public IQueryable<ViewData<Down_img_record>> JoinQuery()
        {
    
    
            var query = from q in dbContext.Down_img_record
                        //联查用户名
                        join u in dbContext.User on q.Down_user_id equals u.Id into uv
                        from s in uv.DefaultIfEmpty()
                        //联查用户部门名称
                        join d in dbContext.Department on s.Department_id equals d.Id into dv
                        from h in dv.DefaultIfEmpty()
                        select new ViewData<Down_img_record>()
                        {
    
    
                            model = q,
                            //下载人姓名
                            C1 = s.Real_name,
                            //下载部门
                            C2 = h.Department_name
                        };
            return query;
        }

おすすめ

転載: blog.csdn.net/u011511086/article/details/112280412