我对此方法有疑问:
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中存在的此过程中获取数据。
正确但我找不到方法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();
}
}
}
答案 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();