我有一个 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>
我想我要么需要某种聚合,比如 GroupBy
或 SelectMany
.
有什么想法吗?
最佳答案
我想你只需要按 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/