我有一个名单下面提到。
var fakedata = new Dictionary<Gateway, List<FeMeasurementValues>>()
{
{
new Gateway { SiteId = 1, FirmwareVersion = "1.1.1", ConnectivityStatus = GatewayConnectivityStatus.ReadyToConnect },
new List<FeMeasurementValues>() { new FeMeasurementValues { MeasurementName = "MsgLRRID", Values = new List<FeValue> { new FeValue { Value = "FFFF123", Horodate = DateTime.Now } } } }
},
{
new Gateway { SiteId = 2, FirmwareVersion = "1.1.2", ConnectivityStatus = GatewayConnectivityStatus.Connected },
new List<FeMeasurementValues>() { new FeMeasurementValues { MeasurementName = "MsgLRRID", Values = new List<FeValue> { new FeValue { Value = "GH67123", Horodate = DateTime.Now } } } }
},
{
new Gateway { SiteId = 3, FirmwareVersion = "1.1.3", ConnectivityStatus = GatewayConnectivityStatus.Disconnected },
new List<FeMeasurementValues>() { new FeMeasurementValues { MeasurementName = "MsgLRRID", Values = new List<FeValue> { new FeValue { Value = " ", Horodate = DateTime.Now } } } }
},
{
new Gateway { SiteId = 4, FirmwareVersion = "1.1.1", ConnectivityStatus = GatewayConnectivityStatus.Connected },
new List<FeMeasurementValues>() { new FeMeasurementValues { MeasurementName = "MsgLRRID", Values = new List<FeValue> { new FeValue { Value = "SA67123", Horodate = DateTime.Now } } } }
}
};
我有两个办法
1."GetPublicNetworkUsedCount()"需要返回以"FFFF"开头的值的计数,因此,在这种情况下,输出应为1。
1."GetPrivateNetworkUsedCount()"需要返回不以"FFFF"开头且包含空值的值的计数。因此,在这种情况下,输出应为3。
下面是我所尝试的:
private static string GetPublicNetworkUsedCount(List<FeValue> values)
{
var countofPublicNetwork = values.Where(x => x.Value.Any(f => x.Value.StartsWith("FFFF")));
return countofPublicNetwork.Count().ToString();
}
private static string GetPrivateNetworkUsedCount(List<FeValue> values)
{
var countofPrivateNetwork = values.Where(x => x.Value.Any(f => !x.Value.StartsWith("FFFF")));
return countofPrivateNetwork.Count().ToString();
}
我得到了错误的输出,获取公共网络使用计数为0,获取私有网络使用计数为1。
请帮帮我。
3条答案
按热度按时间fcg9iug31#
x.Value.Any()
将返回真只要里面的条件是真.这导致返回1 convertet到一个数字.要获取以
FFFF
开头的所有条目,请删除任何部分,例如:如果像Mark在他的评论中提到的那样用
.Count()
替换.Where()
,你可以直接得到计数。pdsfdshx2#
你有一个
List<FeValue>
,其中每个对象都有一个字符串Value
,你把这个字符串当作一个集合,深入一步,就不需要.Any(
了。所以支票应该是
或者只是
fykwrbwg3#
参见备注:
所以,我会这样做:
如果需要,可以将返回的
int
字符串化。也许我会
然后可以用作