繁体   English   中英

字符串数组中的 select 不能超过一项

[英]can not select more than one item from string array

我有 foreach 循环,在迭代之后我已经创建了 string.join 和数组,我想得到一个包含一些项目的数组,但结果我只有一个项目。 我想也许这是一个问题Select((group) => group.FirstOrDefault())

foreach (var task in this.TaskReport.RelatedTaskList
    .Where((o)=> !o.ProtocolNumber.IsNullOrEmptyOrWhiteSpace())
    .GroupBy((task) =>
        new
        {
            task.ProtocolNumber,
            task.CreationDate
        })
    .Select((group) => group.FirstOrDefault())
    .OrderByDescending((task) => task.CreationDate))
{
    joinedString = Translator.Instance().LocalizeString("SRV.RelatedTasks");
    joinedString += relatedtasks.Replace(
        "{{RelatedTaskProtocolNumberDate}}",
        string.Join(
            " ",
            new string[]
            {
                task.ProtocolNumber,
                task.CreationDate.ToString(DateTimeFormats.DateFormat + ", ")
            }.Where((item) => !item.IsNullOrEmptyOrWhiteSpace())
        )
    );
}

你为什么把这么长的linq放在 foreach 循环中? 创建一个外部变量并将其传递给循环,代码会非常干净

它有什么作用?

                            new
                        {
                            task.ProtocolNumber,
                            task.CreationDate
                        })

查看GroupBy示例并使您的 function 正确: https://docs.microsoft.com/en-us/dotnet/api/system.linq-groupview.enum?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM