【问题标题】:Get by id from one model, items from another model using linq and relation one to many?从一个模型中获取id,使用linq从另一个模型中获取项目以及一对多关系?
【发布时间】:2017-11-08 20:15:13
【问题描述】:

有两个简单的模型是一对多的关系。

public class UserModel
{
    public int Id { get; set; }
    public string FullName { get; set; }
    public virtual ICollection<MessageModel> Messages { get; set; }

    public UserModel()
    {
        Messages = new List<MessageModel>();
    }
}

public class MessageModel
{
    public MessageModel()
    {
        this.DateCreated = DateTime.Now;
    }

    [Display(Name = "Date Created")]
    public DateTime DateCreated { get; set; }
    public int Id { get; set; }
    public string Text { get; set; }
    public int? FromUserId { get; set; }
    public UserModel FromUser { get; set; }
}

我想从 db 编写一个 linq 查询,我可以在其中通过用户 ID 获取所有消息项。 我已经尝试过类似的方法,但这不起作用。

UserModel userModel = db.UserModels.Where(x => x.Id == id(x.Messages)).ToList();

UserModel userModel = db.UserModels.Where(x => x.Id == id).Where(x => x.Messages).ToList();

我正在寻找一些决定或建议。

【问题讨论】:

  • 更改您的第二个选择位置:db.UserModels.Where(x => x.Id == id).Select(x => x.Messages).ToList();
  • @Riv 谢谢,我试过了,但没用,我有一个红线错误“无法将类型 List 隐式转换为类型 UserModel”。

标签: .net asp.net-mvc linq linq-to-sql


【解决方案1】:

试试这个:

var userMessages = db.UserModels.Where(x => x.Id == id).Select(y => y.Messages).ToList();

一旦您通过 ID 获得 UserModel,您需要从中选择 Messages。并且返回类型是 MessageModel 的 List,而不是 UserModel

【讨论】:

  • 谢谢你,它的工作,我改变了UserModel userModel,和你写var userMessages一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多