【问题标题】:Select JSON element greater than 0 to a list选择大于 0 的 JSON 元素到列表中
【发布时间】:2020-07-05 20:48:44
【问题描述】:

我有一个 Json 字符串,我想从中选择值大于 0 的元素“initialUnits”并将其添加到列表中。 如何将“x => x.initialUnits”转换为整数,以便测试它是正值还是负值。

我尝试了“Int32.Parse(x => x.initialUnits)”,它给出了错误“无法将 lambda 表达式转换为类型‘字符串’,因为它不是委托类型”。 还是有其他方法可以做到这一点?

var resultOpTrades = JsonConvert.DeserializeObject<RootObject>(Jsontrades);
var Sellopentradeslist = resultOpTrades
                            .trades
                            .Where(x => x.initialUnits > 0)
                            .Select(p => p.price)
                            .ToList()
                            .Select(s => Math.Round(Convert.ToDouble(s), 4))
                            .ToList();

【问题讨论】:

  • 这到底是什么意思:将 "x => x.initialUnits" 转换为整数
  • 请分享您的 json 和模型
  • 您不会将x =&gt; x.initialUnits 转换为整数-您将x.initialUnits 转换为整数,所以我怀疑您想要Where(x =&gt; Int32.Parse(x =&gt; x.initialUnits) &gt; 0)
  • .Where(x =&gt; Int32.Parse(x.initialUnits) &gt; 0) .. as "Int32.Parse(x =&gt; x.initialUnits)" 毫无意义。 Parse 需要一个字符串,x.initialUnits 是一个字符串。 x =&gt; x.initialUnits 不是,它是一个什么都没有的 lambda。
  • Imo 它要么是错字,要么是 Int 重复的字符串。如果没有真正的minimal reproducible example,此处的代码不会重现错误,也不会提供足够的信息,因此我们可以为例如正确的类型提供自定义转换器。

标签: c# json lambda delegates


【解决方案1】:

Int32.Parse() 方法将字符串作为参数。 Lambda 是匿名方法,传递 Action、Func、Predicate。你不能在参数是字符串的地方给出 lambda。 你必须获取价值(使用或不使用 lambda),然后做任何你想做的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多