- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在向 List<>
添加一堆不同的部分并且某些零件可能具有相同的零件号和相同的长度。如果它们确实具有相同的部件号和相同的长度,我需要将这些部件分组以进行显示。
当它们被分组时,我需要显示该零件号以及该零件号中有多少个具有特定长度。
我需要知道如何对两个不同的属性进行分组,并返回一个带类型的对象 List<ICutPart>
和总计
以下是我所能得到的,我试图返回 (IGrouping<int,ICutPart>)sGroup;
但我在函数体的返回部分遇到错误。
如何使用 Group{List<ICutPart> Parts, Int Total}
返回类型对象?
public class CutPart : ICutPart
{
public CutPart() { }
public CutPart(string name, int compID, int partID, string partNum, decimal length)
{
this.Name = name;
this.PartID = partID;
this.PartNumber = partNum;
this.CompID = compID;
this.Length = length;
}
public CutPart(string name, int compID, int partID, string partNum, decimal width, decimal height)
{
this.Name = name;
this.CompID = compID;
this.PartNumber = partNum;
this.PartID = partID;
this.Width = width;
this.Height = height;
this.SF = decimal.Parse(((width / 12) * (height / 12)).ToString(".0000")); //2dp Number;
}
public string Name { get; set; }
public int PartID { get; set; }
public string PartNumber { get; set; }
public int CompID { get; set; }
public decimal Length { get; set; }
public decimal Width { get; set; }
public decimal Height { get; set; }
public decimal SF { get; set; }
}
public class CutParts : List<ICutPart>
{
public IGrouping<int, ICutPart> GroupParts()
{
var sGroup = from cp in this
group cp by cp.Length into g
select new
{
CutParts = g,
total = g.Count()
};
return (IGrouping<int, ICutPart>)sGroup;
}
public new void Add(ICutPart item)
{
base.Add(item);
}
}
最佳答案
我猜你想创建一堆组对象,其中每个组对象都有共同的 Length
和一堆ICutPart
具有该长度的 s。
在代码中,它看起来像这样:
public IEnumerable<IGrouping<int, ICutPart>> GroupParts()
{
return this.GroupBy( o => o.Length );
}
这可能需要解释一下!
IEnumerable
bit 是组对象的集合 - 每个不同的 Length
该集合中的每个“组对象”都是一个 IGrouping<int, ICutPart>
.
这个对象有一个 Key
属性(property),这是你分组的东西 - Length
在这种情况下。
也是一个集合为IGrouping<T>
源自 IEnumerable<T>
- 它是 ICutPart
的集合具有该长度的 s。
如果您调用 ToList()
在其中一个组对象上,您将获得 List<ICutPart>
为了让调用者更轻松,您可以创建一个类来保存这些值。
如果你像这样声明一个类:
public class GroupedByLength
{
public int Length { get; set; }
public List<ICutPart> CutParts { get; set; }
}
然后你可以返回这些对象的集合:
public List<GroupedByLength> GroupParts()
{
return this
.GroupBy( o => o.Length )
.Select( g => new GroupedByLength
{
Length = g.Key,
CutParts = g.ToList(),
}
)
.ToList()
;
}
关于c# - 分组时如何从 Linq 查询返回 IGrouping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865030/
我有一个序列 IGrouping IEnumerable> sequence = ...; 和谓词 Func predicate = ...; 如何过滤Element s 通过将结果保持为 IEnum
我有一个序列 IGrouping IEnumerable> sequence = ...; 和谓词 Func predicate = ...; 如何过滤Element s 通过将结果保持为 IEnum
尝试使用 Automapper 对按两个属性分组的分组查询进行投影时出现以下错误 Missing map from IGrouping`2 to PlayerWarScore. Create usin
我想使用 Linq 创建一个函数来汇总传入的值序列。该函数应如下所示: IDictionary> Summarize(IEnumerable values) { return values
我有一个 LINQ 问题,这让我有点困惑。我可以看到很多替代方法来找到解决方案,但我想尝试解决问题,因为它困扰着我! public enum AnimalType { Cat, Dog
我有一个 IGrouping 类型的对象,想在不更改对象类型的情况下对组内的元素进行排序。 换句话说,我有 var tmp = group.OrderBy(x => x); 与 group类型 IGr
大家好。 假设我有以下类(class): public class ObjectA { public string PropertyA { get; set; }
我有一些代码可以创建列表列表。该列表是这种类型的: List> GroupedDeviceList = new List>(); 但需要返回如下类型的结果: IEnumerable> 这是否可以通
我一直在查看此处的其他线程以了解如何在 linq 中执行 GroupBy。我正在遵循适用于其他人的 EXACT 语法,但它不起作用。 这是查询: var results = from p in pen
我正在尝试创建一个 WCF 数据服务 ServiceOperation,它在服务器端进行分组,然后将数据发送到客户端。 当我尝试调用它(甚至连接到该服务)时,出现错误。它说它不能构造接口(interf
在 IEnumerable包含定义为: class Appointment { public string Name { get; set; } public DateTime LastMod
我目前有: UIEnumerable > 从这段代码: var queryDupFiles = from file in fileList group file by new Portable
IEnumerable> datas = list.GroupBy(x => x.PropertyXYOfMyClass); // get all items from each group fore
我目前有: UIEnumerable > 从这段代码: var queryDupFiles = from file in fileList group file by new Portable
IEnumerable> datas = list.GroupBy(x => x.PropertyXYOfMyClass); // get all items from each group fore
我有两个类: class Foo { public Bar SomeBar { get; set; } } class Bar { public string Name { get;
IGrouping 支持 ElementAt 方法来索引分组的集合。那么为什么方括号运算符不起作用呢? 我可以做类似的事情 list.GroupBy(expr).Select(group => gr
如何直接从 IGrouping 中删除对象 IGrouping ? 目前我所知道的唯一方法是生成一个没有相关元素的新 IGrouping,但我不喜欢这种方式,因为它会在我的应用程序中引起一些麻烦。 有
我已经在列表上应用了 IGrouping<> - 它看起来像这样: IEnumerable> Tiers { get { return ActiveNodes.GroupBy(x => new
这个问题在这里已经有了答案: ILookup vs. IGrouping (3 个答案) 关闭 9 年前。 ILookup 和 IGrouping 是非常相似的 Linq 接口(interface)
我是一名优秀的程序员,十分优秀!