如何将整数值列表返回给c#中的方法

时间:2013-08-20 08:11:18

标签: c#

我的存储库中有一个方法需要提供整数值列表,但我只得到第一列值..如何在服务中获取所有列值..

这是我在存储库中的方法:

public List<int> GetChartInfo(string lineNo, string shiftDateTime, string station)
{
        string query = string.Format("SELECT SUM(QTY_BUILD) AS BUILD_QTY, SUM(QTY_FAIL) AS FAIL_QTY, "+
                                     "DATEPART(HH,BUILD_HOUR) AS SHIFT_HOURS FROM {0} WITH (NOLOCK) "+
                                     "WHERE LINE_NO='{1}' AND BUILD_HOUR >='{2}' AND STATION='{3}' "+
                                     "GROUP BY DATEPART(HH,BUILD_HOUR) ORDER BY SHIFT_HOURS ",_tableName, lineNo, shiftDateTime, station);

        return MitecsRepository.Fetch<int>(query);
}

我在我的服务中调用了这个方法如下:

var QtyBuildList = _qtyBuildRepository.GetChartInfo(cellName, _currentShiftDateTime, tableName); 

QtyBuildList仅获取build_qty数据..如何获取fail_qty和shift_hours数据。

2 个答案:

答案 0 :(得分:0)

为什么不创建一个类并返回此类的列表。例如

public class BuildData
{
    public int BuildQty {get;set;}
    public int FailQty {get;set;}
    public int ShiftHours {get;set;}
}

然后创建一个列表

List<BuildData> BuildDataList = new List<BuildData>();

然后您可以循环播放数据,如

while (ResultSet.Read())
{

     BuildData data = new BuildData();
     data.BuildQty = Convert.ToInt64(ResultSet["BUILD_QTY"];
     data.FailQty = Convert.ToInt64(ResultSet["FAIL_QTY"];
     data.ShiftHours = Convert.ToInt64(ResultSet["SHIFT_HOURS "];
     BuildDataList.Add(data);  
}

return BuildDataList;

因此,您只返回一个BuildData列表而不是List列表。

答案 1 :(得分:0)

根据你的方法的定义,你只能获得一个整数列表。

public List<int> GetChartInfo(

您可以创建一个与您需要的值匹配的自定义类,并返回这些对象的列表,其中每个对象代表查询的一行结果。

另一件事,你可以做的是将查询变成一个列表。

var x = MitecsRepository.Fetch<int>(query).ToList();

然后

return x;

并将方法的定义更改为以下

 public object GetChartInfo(

所以你把它装箱了。

如果您只想要一列

,也可以这样做
return x.Select(p=>p.Item1)

你可以做很多事情但是我仍然会告诉你考虑使用EF。使这样的东西更容易解决。