如何通过基于 LINQ 中给定 ID 的另一个表名查看模型字段

本文关键字:另一个 字段 模型 ID 何通过 LINQ | 更新日期: 2023-09-27 18:32:44

我有一个名为许可证的数据库表,我根据用户搜索条件对其进行过滤

 public class LicencesVM
    {
     public decimal ID { get; set; }
     ...
     public decimal Req_ID { get; set; }
     public int L_Type { get; set; }
    public string L_Type_Name { get; set; } // I created this field to carry ACTIVITIES->NAME Field where LicencesVM.L_Type = ACTIVITIES.ID
    ...
    }

存储库搜索功能,可向许可证虚拟机填充数据

public LicencesVM[] Search(int? take, int? skip, string FullName, int L_Type, string Hafiza_ID)
            {
                IQueryable<LICENSES> Licences = db.LICENSES;
                if (!string.IsNullOrEmpty(FullName))
                {
                    Licences = Licences.Where(x => x.FULLNAME.Contains(FullName));
                }
                if (!string.IsNullOrEmpty(L_Type))
                {
                    decimal L_Type1 = Convert.ToDecimal(L_Type);
                    Licences = Licences.Where(x => x.L_TYPE == L_Type1);
                }
                if (!string.IsNullOrEmpty(Hafiza_ID))
                {
                    Licences = Licences.Where(x => x.HAFIZA_ID.Contains(Hafiza_ID));
                }
LicencesVM[] LicencesVM_AllQuery = Licences.Select(s => new LicencesVM
            {
                ID = s.ID,
                FullName = s.FULLNAME,
                Hafiza_ID = s.HAFIZA_ID,
                L_Type = s.L_TYPE,
                ShName = s.SHNAME,
                Saq_No = s.SAQ_NO,
                L_Type_Name=db.ACTIVITIES.Select(l=>l.NAME).Where(L_Type == l.ID),
                Sh_ID = s.SH_ID,
                Hii = s.HII,
                Street = s.STREET,
                Lic_ID = s.LIC_ID,
                Lic_Date = s.LIC_DATE,
                Lic_End_Date = s.LIC_END_DATE,
                Sh_Owner = s.SH_OWNER
            }).ToArray();
            return LicencesVM_AllQuery;
        }

活动类所需的名称

public partial class ACTIVITIES
{
    public decimal ID { get; set; }
    public string NAME { get; set; }
}

这是(Activities) NAME = (LicencesVM ) L_Type

我想根据L_Type = db.ACTIVITIES.ID获取名称

这个想法肯定行不通

L_Type_Name=数据库。活动。选择(l=>l.NAME)。其中(L_Type == l.ID)

我想要一个 Linq 查询而不是这个思路

如何通过基于 LINQ 中给定 ID 的另一个表名查看模型字段

在执行填充 LicensesVm[] 数组的查询之前,您可以加入活动,如下所示:

Licenses.Join(db.Activities, l=>l.L_TYPE,a=>a.Id,(l,a)=>new LicenseVM {
    ID=l.Id,
    L_TYPE_Name=a.Name,
    ...
}).ToArray()

这是内部连接情况。如果需要外部联接,应改用组联接

相关文章: