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];//在这里,我选择子列表,在本例中是按列表索引
选定的父项添加(“我的新值”);//这里我添加了新的值