c# - 帮助 C# LINQ 投影

标签 c# linq .net-4.0 linq-to-entities projection

我有一个 IQueryable<SomePOCO> (LINQ-Entities 查询,如果重要的话):

public class SomePOCO
{
   public string ParentName { get; set; }
   public string Name { get; set; }
   public string Url { get; set; }
}

我正在尝试转换到一个有两个属性的对象(最好是匿名类型,因为我只需要方法作用域):

public string ParentName { get; set; }
public ICollection<SimplePoco> { get; set; 

简单的POCO如下:

public class SimplePOCO
{
   public string Name { get; set; }
   public string Url { get; set; }
}

我这样做的原因是我检索的所有“SomePOCO”都具有相同的 ParentName,所以我只想要一次,而不是通过网络传输相同的值 N 次并执行.First() .

希望这是有道理的。

最终结果是我应该能够做到这一点:

var parentName = result.ParentName; // string
var pocos = result.SimplePOCOs; // ICollection<SimplePOCO>

我想我要么需要某种聚合,比如 GroupBySelectMany .

有什么想法吗?

最佳答案

我想你只需要按 parent 姓名分组

var result = collection.GroupBy(i => i.ParentName)
           .Select(g => new {
                                ParentName = g.Key, 
                                SimplePocos = g.Select(i => new SimplePoco
                                                                {
                                                                 Name = i.Name, 
                                                                 Url = i.Url
                                                                 })
                              });  

关于c# - 帮助 C# LINQ 投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7199067/

相关文章:

c# 无法执行带有 memset 的 c++ dll

c# - 我们能否仅使用 SILVERLIGHT 和 XML(无 WCF WPF CONSOL 应用程序)创建 Silverlight 套接字服务器?

c# - ConditionalWeakTable 的值会导致内存泄漏吗?

c# - 如何取消引用 LINQ 中可能为空的字符串

.net - 带有连接和 List<GUID> 的 LINQ

exception - 为什么 Json.NET 序列化因 [Serializable] 和只读属性中的 lambda 而失败?

c# - 非泛型类中的泛型方法

c# - 如何在 C# 中将声明作为标志(bool)添加到 SystemUser

c# - C# 中是否有类似 VB.NET 的运算符?

具有属性的类实例化的 C# 到 VB.NET 语法转换