Linq 查询,以 int 数组的形式获取查询结果

本文关键字:查询 结果 获取 数组 int Linq | 更新日期: 2023-09-27 18:33:11

这是我的表。

grp_perm_id   grp_id   Perm_id
23            2          2
27            2          1
28            3          1
29            2          3

我想以整数数组的形式检索结果。下面是我正在尝试的代码

public List<int> GetData(int grp_id)
{
    // List<ts_grp_perm_mapping> tm = (from c in db.ts_grp_perm_mapping where c.grp_id == grp_id select c).ToList();
    int[] selectedradiobuttons = (from c in db.ts_grp_perm_mapping where c.grp_id == grp_id select c).ToArray();
    return selectedradiobuttons.ToArray();
}

在这里,我正在接受grp_id。例如,如果我收到 2(grp_id),那么我想返回包含 perm_id (2,1,3) 的整数数组。如果grp_id为 3,则整数数组包含 perm_id(1)。我该怎么做?在上面的代码中,我收到此错误:

不能将类型 c3card.dal.edmodel.ts_grP_perm[] 隐式转换为 int

任何人都可以建议我如何做到这一点吗?我想返回整数数组。

这是我的 json 代码。

public JsonResult GetCheckedPerm(int usr_groupId)
{
    List<int> selectedradio = GrpPermBAL.GetData(usr_groupId);
    return(selectedradio,JsonRequestBehavior.AllowGet);
}

Linq 查询,以 int 数组的形式获取查询结果

您当前正在选择整行,而不仅仅是perm_id。您还调用了两次ToArray,并尝试返回数组,尽管您的方法的返回类型是List<int>。我只会使用:

public List<int> GetData(int groupId)
{
    return db.ts_grp_perm_mapping
             .Where(c => c.grp_id == groupId)
             .Select(c => c.Perm_id)
             .ToList();
}

我已经将参数的名称调整为更常规 - 我强烈建议您将属性名称(ts_grp_perm_mappinggrp_idPerm_id)也调整为更常规。