C# 我可以在列表中同时使用First()和Concat()吗

C# 我可以在列表中同时使用First()和Concat()吗,c#,linq,C#,Linq,我有一个列表,我想从中删除空值,然后将其与另一个列表连接起来 我可以用LINQ吗?e、 g ViewBag.BackUPDestinationList = ServiceBackupList.Select(x => new SelectListItem() { Value = x.ServerInstanceId.ToString(), Text = x.SPPServerName, Group = group1 }).Concat(ServiceBackupList.Select(x =

我有一个列表,我想从中删除空值,然后将其与另一个列表连接起来

我可以用LINQ吗?e、 g

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并将它们连接起来,但我想检查我的文本,例如x.SPPServerName或x.SPServerName是否为空或null,但不包括它们。
如果我使用First(),它也会在使用Concate()时出错

您可以在创建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();

您可以在创建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();

您可以先使用
Where
删除这些项目,然后填充
SelectListItem
集合:

ServiceBackupList = ServiceBackupList
                      .Where(x => !String.IsNullOrEmpty(x.SPPServerName))
                      .ToList();
......  // code to populate in ViewBag
......

之后,您可以生成
SelectListItem
的集合。您可以先使用
Where
删除这些集合,然后填充
SelectListItem
集合:

ServiceBackupList = ServiceBackupList
                      .Where(x => !String.IsNullOrEmpty(x.SPPServerName))
                      .ToList();
......  // code to populate in ViewBag
......

之后,您可以生成
SelectListItem

的集合。您可以首先使用
Where
过滤空值:

ViewBag.BackUPDestinationList = ServiceBackupList
     .Where(x => !string.IsNullOrEmpty(x.SPPServerName)).Select(...)
     .Concat(ServiceBackupList.Where(x => !string.IsNullOrEmpty(x.SPServerName))
     .Select(...));

您可以先使用
过滤空值,其中

ViewBag.BackUPDestinationList = ServiceBackupList
     .Where(x => !string.IsNullOrEmpty(x.SPPServerName)).Select(...)
     .Concat(ServiceBackupList.Where(x => !string.IsNullOrEmpty(x.SPServerName))
     .Select(...));

@haroonnasir很高兴它有帮助,但是在Where()之后省略ToList()。这只是开销,不需要。@bommelding i asume
ServiceBackupList
声明为
List
,这是why@haroonnasir很高兴它有帮助,但是在Where()之后省略ToList()。这只是开销,不需要。@bommelding i asume
ServiceBackupList
声明为
List
,这是why@haroonnasir如果有帮助,请将其标记为正确答案。是的,在执行此操作之前,必须再等待1分钟。)@haroonnasir将其标记为正确答案(如果有帮助的话)。是的,在这样做之前,必须再等待1分钟。)