gpt4 book ai didi

c# - LINQ to 对象查询

转载 作者:太空宇宙 更新时间:2023-11-03 20:44:31 25 4
gpt4 key购买 nike

我需要有关特定 LINQ 查询的帮助(我仍然很讨厌他们!)

背景信息:

我有一个 DataEntry 类:

class DataEntry{
public Attribute Attribute{get; set;}
public List<object> Data{get; set;}

属性类:

class Attribute{
public string FeatureName{get; set;}
public Types FeatureType{get; set;}
public List<object> PossibleValues{get; set;}

我最终会得到大约 20 个不同的数据条目,每个条目大约有 1000 个数据对象。我想要做的是编写一个 LINQ 查询以根据 FeatureType 选择特定的数据条目,然后给我一个等于特定值的条目的数据项总数。

我要获取的是特征类型等于“foobar”的数据条目中“高”值和“低”值的计数。

我得到的最接近的是:

int count = dataset.SelectMany(i => i.Data).Count(j => j.ToString() == "high");

这给了我“高”的计数,但没有按特征类型过滤。

这可能吗?是否可以在一条语句中完成?

最佳答案

您走在正确的轨道上。只需添加一个 Where 方法来在将内容提供给 SelectMany 之前过滤掉内容。

dataset.Where(i => i.Attribute.FeatureType == Types.FooBar)
.SelectMany(i => i.Data)
.Count(j => j.ToString() == "high")

要在单个语句中计算高低,您可以尝试:

dataset.Where(i => i.Attribute.FeatureType == Types.FooBar)
.SelectMany(i => i.Data)
.Select(i => i.ToString())
.Aggregate(new { High = 0, Low = 0 },
(acc, i) => val == "high" ? new { High = i.High + 1, i.Low }
: val == "low" ? new { i.High, Low = i.Low + 1 } : acc);

关于c# - LINQ to 对象查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1376539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com