将nullable int的IQueryable转换为int数组

时间:2017-04-06 18:13:58

标签: c# linq

我尝试从可以为user_input的{​​{1}}对象生成整数数组。我在将$(document).on('click', '.delete', function(e){ $(this).parent().remove(); }) 类型转换为IQueryable时遇到问题。下面的查询构建,但执行时出错?

int

2 个答案:

答案 0 :(得分:4)

您的结果中的每个项目都无法投放到int。您为结果集的每个项目选择一个具有三个属性的匿名类型。如何将其转换为int

另一方面,这样的事情会起作用:

int[] result =  (from x in query
                 where x.SITE_ID == siteId
                 select x.RANK_1 ?? 0).ToArray();

但是,我意识到RANK_1RANK_2RANK_3的含义以及您想要检索的内容。通过回答这个问题,您可以根据上述代码解决问题。

答案 1 :(得分:0)

您的代码正在尝试将IEnumerable匿名类型转换为IEnumerable<int>

这一行:

(from x in query
        where x.SITE_ID == siteId
        select new
        {
            x.RANK_1,
            x.RANK_2,
            x.RANK_3
        })

创建一个新类型对象的IEnumerable,包含3个属性RANK_1RANK_2RANK_3。对Cast<int>的调用会尝试将此类型转换为int,这是不可能的。