C# 向列表Linq中的列表添加值

C# 向列表Linq中的列表添加值,c#,linq,C#,Linq,我正在上这样的课 public class CameraModel { public int JobId { get; set; } public int ViewId { get; set; } public Guid ViewGuid { get; set; } public string Name { get; set; } public int ViewNum { get; set; } public int Layout

我正在上这样的课

public class CameraModel
{    
    public int JobId { get; set; }

    public int ViewId { get; set; }

    public Guid ViewGuid { get; set; }

    public string Name { get; set; }

    public int ViewNum { get; set; }

    public int LayoutID { get; set; }

    public List<CameraViewItemModel> CameraViewItems { get; set; }
}
现在,我将CameraViewItemModel的列表分配如下:

public class CameraViewItemModel
{
    public int JobID { get; set; }
    public Guid ViewGuid { get; set; }
    public int ViewID { get; set; }
    public int CamNum { get; set; }
    public Guid ChannelGuid { get; set; }
    public string Name { get; set; }

    public ActionType Action { get; set; }
}
// get all the cameramodel's
cameraModels = _unitOfWork.Context.CameraViews.Where(m => m.JobId == siteId)
                   .Select(m => new CameraModel
                   {
                     JobId = m.JobId,
                     ViewId = m.ViewId,
                     ViewGuid = m.ViewGuid,
                     Name = m.Name,
                     ViewNum = m.ViewNum,
                     LayoutID = m.LayoutId
                   }).ToList();

// get all the cameraviewitemmodels
cameraViewItemModels =

(from cameraView in _unitOfWork.Repository<CameraViews>().Get(x => x.JobId == siteId).Result
 join cameraViewItem in _unitOfWork.Repository<CameraViewItems>().Get(x => x.JobId == siteId)
 .Result on cameraView.ViewId equals cameraViewItem.ViewId into CameraViewItemResults
 from cameraViewItemResult in CameraViewItemResults.DefaultIfEmpty()

 join cameraChannel in _unitOfWork.Repository<CameraChannels>().Get(x => x.JobId == siteId)
 .Result on (cameraViewItemResult == null ? new Guid() : cameraViewItemResult.ChannelGuid) equals cameraChannel.ChannelGuid into CameraChannelResults
 from cameraChannelResult in CameraChannelResults.DefaultIfEmpty()

 select new CameraViewItemModel
 {
   JobID = cameraView.JobId,
   ViewID = cameraView.ViewId,
   ViewGuid = cameraView.ViewGuid,
   CamNum = cameraViewItemResult.CamNum,
   ChannelGuid = cameraChannelResult.ChannelGuid,
   Name = cameraChannelResult.Name
 }).ToList();

// then do a 'join' on JobId, ViewId and ViewGuid and assign the list of cameraviewitemmodels to cameraModels.

foreach (var cameraModel in cameraModels)
{
  cameraModel.CameraViewItems = (from cameraViewItem in cameraViewItemModels
                                 where cameraModel.JobId == cameraViewItem.JobID
                                 && cameraModel.ViewId == cameraViewItem.ViewID
                                 && cameraModel.ViewGuid == cameraViewItem.ViewGuid
                                 select cameraViewItem).ToList();
}

return cameraModels;
//获取所有cameramodel的
cameraModels=\u unitOfWork.Context.CameraViews.Where(m=>m.JobId==siteId)
.选择(m=>new CameraModel
{
JobId=m.JobId,
ViewId=m.ViewId,
ViewGuid=m.ViewGuid,
Name=m.Name,
ViewNum=m.ViewNum,
LayoutID=m.LayoutID
}).ToList();
//把所有的照相机都拿来
摄像机模型=
(来自_unitOfWork.Repository()中的cameraView获取(x=>x.JobId==siteId)。结果
在_unitOfWork.Repository()中加入cameraViewItem(x=>x.JobId==siteId)
.Result on cameraView.ViewId等于cameraViewItem.ViewId到CameraViewItemResults
来自CameravieItemResult中的CameravieItemResults.DefaultIfEmpty()中的CameravieItemResult
在_unitOfWork.Repository()中加入cameraChannel(x=>x.JobId==siteId)
.Result on(cameraViewItemResult==null?新Guid():cameraViewItemResult.ChannelGuid)等于cameraChannel.ChannelGuid进入CameraChannelResults
来自CameraChannelResults.DefaultIfEmpty()中的cameraChannelResult
选择新的CameraViewItemModel
{
JobID=cameraView.JobID,
ViewID=cameraView.ViewID,
ViewGuid=cameraView.ViewGuid,
CamNum=CameravieItemResult.CamNum,
ChannelGuid=cameraChannelResult.ChannelGuid,
Name=cameraChannelResult.Name
}).ToList();
//然后对JobId、ViewId和ViewGuid进行“联接”,并将cameraviewitemmodels列表分配给cameraModels。
foreach(cameraModels中的var cameraModel)
{
cameraModel.CameravieItems=(来自CameravieItemModels中的CameravieItem
其中cameraModel.JobId==cameraViewItem.JobId
&&cameraModel.ViewId==CameravieItem.ViewId
&&cameraModel.ViewGuid==cameraViewItem.ViewGuid
选择cameraViewItem).ToList();
}
返回摄像机模型;
数据库中有三个表:

CameraViews
CameraViewItems
CameraChannels

CameraViews
是主表。它与
CameraViewItems
camerachannes
左连接,以获得所需的结果。
CameraViewItems
camerachnels
中可能没有对应CameraView的任何数据


是否可以在一个linq语句中将
CameraViewItemModels
列表分配给
CameraModels

下面是一种向子列表添加值的简单方法,不知道这是否是您的意思。如果有必要,您可以继续选择子列表

var parent_lst = new List<List<string>>(); // Root/parent list that contains the other lists
var sub_lst = new List<string>(); // Sub list with values

var selected_parent_lst = parent_lst[0]; // Here I select sub list, in this case by list index
selected_parent_lst.Add("My new value"); // And here I add the new value
var parent_lst=new List();//包含其他列表的根/父列表
var sub_lst=新列表();//带有值的子列表
var selected_parent_lst=parent_lst[0];//在这里,我选择子列表,在本例中是按列表索引
选定的父项添加(“我的新值”);//这里我添加了新的值

这里有一个简单的方法向子列表添加值,不知道这是不是你的意思。如果有必要,您可以继续选择子列表

var parent_lst = new List<List<string>>(); // Root/parent list that contains the other lists
var sub_lst = new List<string>(); // Sub list with values

var selected_parent_lst = parent_lst[0]; // Here I select sub list, in this case by list index
selected_parent_lst.Add("My new value"); // And here I add the new value
var parent_lst=new List();//包含其他列表的根/父列表
var sub_lst=新列表();//带有值的子列表
var selected_parent_lst=parent_lst[0];//在这里,我选择子列表,在本例中是按列表索引
选定的父项添加(“我的新值”);//这里我添加了新的值