【问题标题】:How can I retrieve first item from a Collection?如何从 Collection 中检索第一个项目?
【发布时间】:2009-02-25 19:02:36
【问题描述】:

我不知道如何从这个集合中检索第一个项目:

IGrouping<string, Plantilla> groupCast = group as System.Linq.IGrouping<string, Plantilla>;

我也试过了:

IGrouping<string, Plantilla> firstFromGroup = groupCast.FirstOrDefault();

但不工作原因和显式转换已经存在

【问题讨论】:

  • 你能发布你用来获取“组”的查询吗?

标签: c# collections c#-3.0


【解决方案1】:

为什么不直接使用var

var firstFromGroup = group.First();

至于您收到错误的原因,我猜 Key 或 Element 与您认为的不同。查看错误消息的其余部分,了解编译器抱怨的类型。请注意,如果涉及匿名类型,则获取它的唯一方法是使用var

【讨论】:

【解决方案2】:

试试这个(根据你的部分解决方案):

foreach (var group in dlstPlantillas.SelectedItems)
{
    var groupCast = groupCast = group as System.Linq.IGrouping<string, Plantilla>
    if(groupCast == null) return;

    item = groupCast.FirstOrDefault<Plantilla>();  
    if(item == null) return;

    // do stuff with item
}

【讨论】:

  • 一个 var 的内存成本是多少?匿名类型也比已知类型重吗?
  • 一个 var 是免费的。当你做 var x = "x";编译器可以看到 "x" 是一个字符串,所以它写成 String x = "x";这一切都发生在编译器中,在您的 .EXE 文件中出现的代码将是相同的
【解决方案3】:

这是我的部分解决方案:

foreach (var group in dlstPlantillas.SelectedItems)
                {
                    IGrouping<string, Plantilla> groupCast = group as System.Linq.IGrouping<string, Plantilla>;

                    if (null == groupCast) return;
                    foreach (Plantilla item in groupCast.Take<Plantilla>(1)) //works for me
                    {
                        template.codigoestudio = item.codigoestudio;
                        template.codigoequipo = item.codigoequipo;
                        template.codigoplantilla = item.codigoplantilla;
                        template.conclusion = item.conclusion;
                        template.hallazgo = item.hallazgo;
                        template.nombreequipo = item.nombreequipo;
                        template.nombreexamen = item.nombreexamen;
                        template.tecnica = item.tecnica;
                    }
                }

【讨论】:

    猜你喜欢
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多