在Where子句中使用GetValue

愚蠢的问题

我在asp.net核心中有一个api(我是apis btw的新手),并且我试图通过类属性和该属性值过滤结果。如果我有一个名为类info和它的属性attackdefense等等......该类型的属性是int用户希望看到的结果,其中attack > 5defense > 7等..这里是我的类:

public class Champion
{
    public string version { get; set; }
    public string id { get; set; }
    public string key { get; set; }
    [JsonProperty("name")]
    public string Name { get; set; }
    public string title { get; set; }
    public string blurb { get; set; }
    public info info { get; set; }
    public string[] tags { get; set; }
    //etc
}
public class Root
{
    public Dictionary<string, Champion> data { get; set; }
}
public class info
{
    public int attack { get; set; }
    public int defense { get; set; }
    public int magic { get; set; }
    public int difficulty { get; set; }
}
public class stats
{
    public double hp { get; set; }
    public double hpperlevel { get; set; }
    public double mp { get; set; }
    public double mpperlevel { get; set; }
    //etc
}

这是我的控制器:

[HttpGet("{property}/{value}")]    //property is attack, defense, etc
public ActionResult Get(string property, int value)
{
    var json = //json string;
    var champions = JsonConvert.DeserializeObject<Root>(json); 
    info i = new info { };

    //Here is what I am trying to implement
    var returnValues = champions.data.Values
                          .Where(x => x.info.GetType()
                               .GetProperty(property)
                               .GetValue(i, null) > value);

    //remaining code and return statement;
}

我想做的是returnValues用作champions对象中所有值的列表

Where(x => x.property > value).ToList()

当我使用GetType().GetProperty().GetValue() > value我试图对象比较的int .Where要求bool进行筛选。所以我的问题是如何实现这一目标?或者,还有更好的方法?

恩多加奇

您应该将该对象转换为属性的实际类型。在这种情况下,它是一个int此外,您不需要其他null参数。只是GetValue(yourObject)会工作。您调用它并将其转换为您的媒体资源类型。

尝试这个:

var returnValues = champions.data.Values
    .Where(x => (int) (x.info.GetType()
        .GetProperty(property)
        .GetValue(x.info)) > value);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在“ where”子句中使用新列

来自分类Dev

在UPDATE语句中使用WHERE子句

来自分类Dev

SQL查询:在WHERE子句中使用AND / OR

来自分类Dev

括号在where子句中使用

来自分类Dev

在WHERE子句中使用枚举的FlexibleSearch

来自分类Dev

在where子句中使用cassandra的ttl()

来自分类Dev

在where子句中使用case语句

来自分类Dev

在“ where”子句中使用新列

来自分类Dev

在WHERE子句中使用Count值

来自分类Dev

在日期的where子句中使用案例

来自分类Dev

在Where子句中使用Mysql变量

来自分类Dev

在select语句中使用WHERE子句

来自分类Dev

在LINQ Where子句中使用GetProperties()

来自分类Dev

在WHERE子句中使用NOT LIKE

来自分类Dev

在where子句中使用别名-SQL

来自分类Dev

在MYSQLI where子句中使用日期

来自分类Dev

在Oracle的Where子句中使用案例

来自分类Dev

在Spark SQL的'WHERE'子句中使用'as'

来自分类Dev

MYSQL在WHERE子句中使用别名

来自分类Dev

在 WHERE 子句中使用 NULL

来自分类Dev

在 WHERE 子句中使用 MySQL 变量

来自分类Dev

if else 在 mysql where 子句中使用

来自分类Dev

在 WHERE 子句中使用 DIFFERENCE

来自分类Dev

在SELECT子句中使用子查询过滤表与在where子句中过滤

来自分类Dev

在WHERE子句中使用可选条件的正确方法

来自分类Dev

Haskell-如何在where子句中使用<-

来自分类Dev

我如何在Where子句中使用IFNULL

来自分类Dev

休眠-无法在where子句中使用UserType执行查询

来自分类Dev

如何在WHERE子句中使用MySql MAX()