我有一个列表,我想从中删除null,然后将其与其他列表连接起来。
我可以使用LINQ吗?例如
ViewBag.BackUPDestinationList = ServiceBackupList.Select(x =>
new SelectListItem()
{
Value = x.ServerInstanceId.ToString(),
Text = x.SPPServerName,
Group = group1
}).Concat(ServiceBackupList.Select(x =>
new SelectListItem()
{
Value = x.NodeGuid.ToString(),
Text = x.SPServerName,
Group = group2
})).ToList();
上面的我正在使用两个selectlstitems并将它们串联起来,但是我想检查我的Text是否x.SPPServerName或x.SPServerName为空或不包含它们。 如果我使用First(),也会在使用Concate()时出错。
答案 0 :(得分:4)
您可以在创建SelectListItem之前过滤两个集合。考虑以下示例,
ServiceBackupList.Where(x=>!string.IsNullOrEmpty(x.SPPServer))
.Select(x =>
new SelectListItem()
{
Value = x.ServerInstanceId.ToString(),
Text = x.SPPServerName,
Group = group1
})
.Concat(ServiceBackupList
.Where(x=>!string.IsNullOrEmpty(x.SPPServer))
.Select(x =>
new SelectListItem()
{
Value = x.NodeGuid.ToString(),
Text = x.SPServerName,
Group = group2
})).ToList();
答案 1 :(得分:2)
您可以先使用Where
删除它们,然后填充SelectListItem
集合:
ServiceBackupList = ServiceBackupList
.Where(x => !String.IsNullOrEmpty(x.SPPServerName))
.ToList();
...... // code to populate in ViewBag
......
之后,您可以生成SelectListItem
的集合。
答案 2 :(得分:0)
您可以先使用Where
过滤空值:
ViewBag.BackUPDestinationList = ServiceBackupList
.Where(x => !string.IsNullOrEmpty(x.SPPServerName)).Select(...)
.Concat(ServiceBackupList.Where(x => !string.IsNullOrEmpty(x.SPServerName))
.Select(...));