C# 如何使用linq获取模型元素的计数
我正在使用.NETCore。我有嵌套模型,它按行显示数据C# 如何使用linq获取模型元素的计数,c#,linq,.net-core,enums,C#,Linq,.net Core,Enums,我正在使用.NETCore。我有嵌套模型,它按行显示数据 public class States { public string Name { get; set; } public List<DateData> States { get; set; } } public class DateData { public DateTime Date { get; set; } public StateType type { get; set; } } public e
public class States
{
public string Name { get; set; }
public List<DateData> States { get; set; }
}
public class DateData
{
public DateTime Date { get; set; }
public StateType type { get; set; }
}
public enum StateType
{
Available,
NotAvailable
}
公共类状态
{
公共字符串名称{get;set;}
公共列表状态{get;set;}
}
公共类数据
{
公共日期时间日期{get;set;}
公共StateType类型{get;set;}
}
公共枚举状态类型
{
可用,
显著的
}
其中StateType是enum
这里,States包含state类型和按行显示的每个日期
public class States
{
public string Name { get; set; }
public List<DateData> States { get; set; }
}
public class DateData
{
public DateTime Date { get; set; }
public StateType type { get; set; }
}
public enum StateType
{
Available,
NotAvailable
}
我需要根据枚举筛选我的响应,以获得NotAvailable date的总计数
注意:我需要根据日期获取数据。例如,StateType.NotAvailable的2020年10月9日的所有数据。列表状态包含同一日期的多个数据
如何实现这一点?对于单个
状态
对象
obj.States.Where(x=>x.type==StateType.NotAvailable.Count())
查看状态列表
对象
objs.SelectMany(x=>x.States)。其中(x=>x.type==StateType.NotAvailable)。Count()
如果我理解正确,您希望从States对象中统计其不可用状态列表中的所有状态
var stateObject= new States()
var count = stateObject.States.Count(x => x.type == StateType.NotAvailable);
您可以使用Linq
Where
函数过滤列表,然后使用Count()
合计之后剩余的项目数
e、 g.如果s
是状态的实例,则:
var count = s.StateList.Where(st => st.type == StateType.NotAvailable).Count();
或者:
var count = s.StateList.Count(st => st.type == StateType.NotAvailable);
工作演示:
注意:我将States.States
重命名为States.StateList
,因为(至少在.NET Core 3.1中)属性不能与其封闭类型具有相同的名称。假设s
是类型为States
的对象,那么可能s.States.Where(st=>st.StateType==StateType.NotAvailable)。Count
?(未经测试)@ADyson我尝试过这个,但它返回的是整个模型,没有经过任何过滤。“但它返回的是整个模型,没有经过任何过滤。”你确定收藏中有可用的<代码>吗?@AbhishekSingh我不同意-演示:。你一定是算错了。我已经用下面的答案形式化了-,请看一下。第二个答案是我的,但我需要根据日期获取数据。如2020年10月9日的所有StateType数据。NotAvailable@AbhishekSingh“但我需要根据日期获取数据。比如,所有2020年10月9日的数据都是StateType.NotAvailable”你为什么不在原来的帖子中提到这一点?这听起来很重要。这是最后一次要求变更吗?或者,在这里的人们调整他们的解决方案并解决您的第二个问题后,您会挖掘第三个问题吗?@MongZhu我的道歉,先生,您能帮助解决这个问题吗?@AbhishekSingh senz已经解决了,请看comment@AbhishekSingh看看我的第二条评论