【问题标题】:Using LINQ and Lambda expression to assign value in ViewModel Object Class in C#使用 LINQ 和 Lambda 表达式在 C# 中的 ViewModel 对象类中赋值
【发布时间】:2016-12-05 13:21:29
【问题描述】:

我想将 LIST 中的值分配给 ViewModel 中的另一个类对象“_People.People”,其中循环作为选项 1 _uof.PeopleRepository.GetAll() 给了我 PeopleEntity 对象数据

视图模型

public class PeopleViewModel
{
    public PeopleEntity People { get; set; }
    public PeopleUnitEntity PeopleUnit { get; set; }
}

植入类

 public override IList<PeopleViewModel> GetPeopleByPersonCode(int PersonCode)
    {
        IList<PeopleViewModel> _People = null;

        using (var _uof = new FES_UOF())
        {
             _People = _uof.PeopleRepository.GetAll().Where(x => x.PERSON_CODE == PersonCode).ToList();

        //I need help here; want to put above list value to _people.People object 
        }

        return _People;
    }

人物视图模型

 [Table("FES.PEOPLE")]
public class PeopleEntity
{
    [Key]
    public int PERSON_CODE { get; set; }

    [StringLength(50)]
    public string FORENAME { get; set; }

    [StringLength(240)]
    public string MIDDLE_NAMES { get; set; }

    [Required]
    [StringLength(50)]
    public string SURNAME { get; set; }

    [StringLength(50)]
    public string PREVIOUS_SURNAME { get; set; }

    [StringLength(8)]
    public string TITLE { get; set; }
//remaining code

第二次更新问题

我已经实现了在 viewModel 对象中获取数据,但我的问题仍然存在,我如何实现这一点,即通过使用没有循环的 Lambda 表达式。

工作事务如下;

_PeopleModel = (from pl in _uof.PeopleRepository.GetAll()
                 where pl.PERSON_CODE == PersonCode
                 select new PeopleViewModel { People = pl}).ToList();

输出 GetPeopleByPersonCode

我已经尝试过如下操作,但它不起作用;

var queryResult = new PeopleViewModel { People =  _uof.PeopleRepository.GetAll().Where(x => x.PERSON_CODE == PersonCode)  };

【问题讨论】:

  • 调用GetPeopleByPersonCode方法的响应是什么?
  • 在我的问题中第二次更新后查看部分

标签: c# viewmodel


【解决方案1】:

如果我理解正确,您想将 linq 样式转换为 lambda 样式。如果是这样,您可以执行以下操作:

_PeopleModel = _uof.PeopleRepository.GetAll()
.Where (x= > x.PERSON_CODE == PersonCode)
.Select(pl => new PeopleViewModel { People = pl})
.ToList();

我这样说是因为在您的打印屏幕中,您的 People 属性中有结果。

【讨论】:

    【解决方案2】:

    我已经从 LINQ 和 Lambda 中找到了答案

     public override IList<PeopleViewModel> GetPeopleByPersonCode(int PersonCode)
        {
            IList<PeopleViewModel> _PeopleModel = null;
            IList<PeopleViewModel> _PeopleModel_b = null;
    
            using (var _uof = new FES_UOF())
            {
                _PeopleModel_b =   _uof.PeopleRepository.GetAll().Where(x => x.PERSON_CODE == PersonCode).Select( pl => new PeopleViewModel { People = pl}).ToList();
    
              //or
                _PeopleModel_b = (from pl in _uof.PeopleRepository.GetAll()
                                  where pl.PERSON_CODE == PersonCode
                                  select new PeopleViewModel { People = pl}).ToList();
            }
    
            return _PeopleModel;
        }
    

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 2013-03-29
      • 2023-03-12
      相关资源
      最近更新 更多