Dataset1 - 方法连接

时间:2012-02-23 15:47:19

标签: c# asp.net

我对此方法有疑问:

    public List<int> menu_wid_w_kat()
    {
        DataSet1TableAdapters.menu_widac_wszystkoTableAdapter pk = new DataSet1TableAdapters.menu_widac_wszystkoTableAdapter();
        List<int> lista = new List<int>();
        lista = pk.?
        return lista;
    }

在dataset1中,我有Fill,GetData(@id),这与程序相关(程序工作正确)

问题在于此方法,因为我不知道如何将此方法与dataset1连接(但我不想使用linq:(lista = (from o in pk.GetData() select o.nazwa).ToList();)

我的想法是但不起作用,但可能你会明白我想做什么。与方法put(id号)连接并获取数据列表:

lista = pk.GetData(id)

我只想从数据集1中存在的此过程中获取数据。

enter image description here enter image description here

正确但我找不到方法GetIdList()

baza nasza_baza = new baza();             var da = new DataSet1TableAdapters.menu_widac_wszystkoTableAdapter();             列出productIDs = da。 &lt; - 我找不到方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace DataSet1TableAdapters 
{
    public partial class menu_widac_wszystkoTableAdapter
    {
        public List<int> GetIdList(int ids)
        {
            List<int> list = new List<int>();
            System.Data.SqlClient.SqlCommand command = this.CommandCollection(ids);
            command.CommandTimeout = command.Connection.ConnectionTimeout;

            System.Data.ConnectionState previousConnectionState = command.Connection.State;
            try
            {
                if (((command.Connection.State & System.Data.ConnectionState.Open) != System.Data.ConnectionState.Open))
                {
                    command.Connection.Open();
                }
                using (System.Data.SqlClient.SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        list.Add(reader.GetInt32(0));
                    }
                }
            }
            finally
            {
                if ((previousConnectionState == System.Data.ConnectionState.Closed))
                {
                    command.Connection.Close();
                }
            }

            return list;
        }

        private System.Data.SqlClient.SqlCommand CommandCollection(int p)
        {
            throw new NotImplementedException();
        } 

    }
}

1 个答案:

答案 0 :(得分:0)

最快的方法是使用将您的ID作为TableAdapter返回的方法,在DataSet中扩展自动生成的List<int>

如果要扩展功能,则无法更改DatesetName.designer.cs / vb中生成的类(它将在任何更改时重新创建),但名称中没有设计器的文件(如果不是则创建它)存在)。然后你必须扩展部分TableAdapter类(在你的情况下为menu_widac_wszystkoTableAdapter)。

看一下下面的代码,看看我的意思,我没有测试过,但我希望你接受我的观点:

namespace YourRootNameSpace.DataSet1TableAdapters {
{
    public partial class menu_widac_wszystkoTableAdapter
    {
        public List<int> GetIdList(int categoryID)
        {
            List<int> list = new List<int>();
            System.Data.SqlClient.SqlCommand command = this.CommandCollection[0];
            command.CommandTimeout = command.Connection.ConnectionTimeout;

            System.Data.ConnectionState previousConnectionState = command.Connection.State;
            try {
                if (((command.Connection.State & System.Data.ConnectionState.Open) != System.Data.ConnectionState.Open)) {
                    command.Connection.Open();
                }
                command.Parameters[ "@id" ].Value = categoryID;
                using (System.Data.SqlClient.SqlDataReader reader = command.ExecuteReader()) {
                    while (reader.Read()) {
                        list.Add(reader.GetInt32(0));
                    }
                }
            } finally {
                if ((previousConnectionState == System.Data.ConnectionState.Closed)) {
                    command.Connection.Close();
                }
            }

            return list;
        }
    }
}

编辑:在我阅读了您编辑过的问题后,我发现我已经误解了您的要求,但无论如何我的方法应该是完美的。基本上,您不希望使用product_ids获得DataTable而只需List<int>

以上述方式扩展TableAdapter之后:

var da = new DataSet1TableAdapters.menu_widac_wszystkoTableAdapter();
List<int> productIDs = da.GetIdList();