加入LINQ在列表中选择一个子列表

weos 发布于 6 天前 join 最后更新 6 天前 10 浏览

我有两个类如下:

public class HRM_SERVICE_PERD_BNFT_DTLModel
{
    public string SRVC_PERD_BNFT_CODE { get; set; }
public string RTR_BNFT_CODE { get; set; }
public string RTR_BNFT_NAME { get; set; }
public string RTR_BNFT_CALC_MODE { get; set; }
public string SAL_HEAD_CODE { get; set; }
public string SAL_HEAD_NAME { get; set; }
public string RTR_BNFT_IN_PERCENT { get; set; }
public string RTR_BNFT_AMOUNT { get; set; }
public string RTR_BNFT_INACTV_DATE { get; set; }
public short? RTR_BNFT_SLNO { get; set; }
}
public class HRM_RETIREMENT_BENEFITModel : BaseModel
{
    public string RTR_BNFT_CODE { get; set; }
public string RTR_BNFT_NAME { get; set; }
public string RTR_BNFT_SRTNM { get; set; }
public string RTR_BNFT_REM { get; set; }
public short? RTR_BNFT_SLNO { get; set; }
}
现在我想从第一个模型中为特定的“SRVC_PERD_BNFT_CODE”选择数据,然后我需要从第二个表格中选择所有过滤数据的“RTR_BNFT_NAME”以及第一个模型中的其他值。我试图加入,但没有得到名称。它显示system.collection.string而不是值。 以下是我到目前为止的尝试:
public List<HRM_SERVICE_PERD_BNFT_DTLModel> GetBenefitData(string mstcode)
    {
        var model2 = DataContext.HRM_SERVICE_PERD_BNFT_DTL.AsEnumerable().Where(m => m.SRVC_PERD_BNFT_CODE == mstcode).Select(s=>s).ToList();
var model = DataContext.HRM_SERVICE_PERD_BNFT_DTL.AsEnumerable().Where(m => m.SRVC_PERD_BNFT_CODE == mstcode)
            .Select(s => new HRM_SERVICE_PERD_BNFT_DTLModel
            {
                RTR_BNFT_CODE = s.RTR_BNFT_CODE,
                RTR_BNFT_SLNO = s.RTR_BNFT_SLNO,
                RTR_BNFT_CALC_MODE = s.RTR_BNFT_CALC_MODE,
                RTR_BNFT_AMOUNT = (s.RTR_BNFT_AMOUNT).ToString(),
                RTR_BNFT_NAME = (from x in model2
                                 join c in DataContext.HRM_RETIREMENT_BENEFIT on      x.RTR_BNFT_CODE equals c.RTR_BNFT_CODE into p
                                 from b in p.AsEnumerable()
                                 select b.RTR_BNFT_NAME).ToList().ToString(),
RTR_BNFT_IN_PERCENT = (s.RTR_BNFT_IN_PERCENT).ToString()
            }).ToList();
return model;
    }
我做错了什么?请帮忙。
已邀请:

cet

赞同来自:

以下是可疑的。 .ToList().ToString() 删除ToString部分并将其替换为类似FirstorDefault的部分,然后它应该可以工作。 得到类似System.Collection.String的原因是List<T>.ToString()通常是typename,直到以某种方式覆盖它。 以下最小剪裁产品System.Collections.Generic.List1 [System.String] `

 List<String> list = new List<String>();
var str = list.ToString();
Console.WriteLine(str); //System.Collections.Generic.List`1 [System.String]