【发布时间】:2020-06-16 19:49:16
【问题描述】:
我正在尝试加入两个集合。我设法将两者正确连接,其中连接部分的类型相同 - 但这不是目标。出现困难是因为我在其中一个集合中有一个字符串(id)列表,并且我想用另一个集合的对象替换该列表中的每个字符串,该对象是定义为的用户集合:
public string name { get; set; }
public string email { get; set; }
public string _id { get; set; }
public bool IsDeleted { get; set; }
我有两种类型的会议,我想将用户插入替换字符串的会议,因此它是 DTO。
public class MeetingBase : ModelBase
{
public string createdBy { get; set; }
public string facilitator { get; set; }
public string topic { get; set; }
public string address { get; set; }
public string city { get; set; }
public string country { get; set; }
public int RoomNumber { get; set; }
public DateTime meetingDate { get; set; }
}
public class Meeting : MeetingBase
{
public List<string> attendees { get; set; }
}
public class MeetingDTO : MeetingBase
{
public List<User> attendees { get; set; }
}
如前所述,我想将Meeting 的集合与users 的集合一起加入,从而得到MeetingDTO 的集合
到目前为止,我最好的尝试是这样的:
public async Task<List<MeetingDTO>> getMeetingDtos(string userid)
{
var userCollection = _userDataManager.GetDataContext().MongoCollection;
var meetingCollection = _meetingDataManager.GetDataContext().MongoCollection;
var query = from m in meetingCollection.AsQueryable()
where (m.createdBy == userid)
from attendee in m.attendees
join u in userCollection.AsQueryable() on attendee equals u._id into meetingusers
select new MeetingDTO()
{
_id = m._id,
IsDeleted = m.IsDeleted,
attendees = meetingusers.ToList(),
address = m.address,
city = m.city,
country = m.country,
createdBy = m.createdBy,
facilitator = m.facilitator,
meetingDate = m.meetingDate,
RoomNumber = m.RoomNumber,
topic = m.topic
};
var result = query.ToList();
return result;
}
但是,这种尝试会产生以下运行时异常System.NotSupportedException: '$project or $group does not support {document}.'
【问题讨论】: