我有一个包含五列的表TBL_Person
:
Person_ID, FirstName, LastName, Age, Location
我有一个返回数据集的方法:
public DataSet GetPerson()
{
SqlCommand _select = new SqlCommand();
_select.CommandText = "SP-GetAllPerson";
_select.CommandType = System.Data.CommandType.StoredProcedure;
_select.Connection = Connection.GetConnection;
SqlDataAdapter _daPerson = new SqlDataAdapter(_select);
DataSet _personDs = new DataSet();
_daCountry.Fill(_personDs, "[TBL_Person]");
return _personDs;
}
此方法将返回包含以下列的数据集:
Person_ID, FirstName, LastName, Age, Location
但我希望我的方法返回一个包含以下列的数据集:
FirstName, LastName, Age
我该怎么做?
答案 0 :(得分:1)
如果您不想选择所有列,请相应地更改存储过程。
如果您想在C#中进行更改,可以通过table.Columns.Remove(name)
删除不需要的列:
public DataSet GetPerson(IEnumerable<string> wantedColumns)
{
using(SqlConnection connection = new SqlConnection("Connection-String"))
using (SqlDataAdapter _daPerson = new SqlDataAdapter("SP-GetAllPerson", connection))
{
_daPerson.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure;
DataSet _personDs = new DataSet();
_daPerson.Fill(_personDs, "TBL_Person");
DataTable tblPersonIds = _personDs.Tables["TBL_Person"];
var allColumns = tblPersonIds.Columns.Cast<DataColumn>().Select(c => c.ColumnName);
// remove unwanted columns:
foreach (string columnToRemove in allColumns.Except(wantedColumns))
tblPersonIds.Columns.Remove(columnToRemove);
return _personDs;
}
}
您可以通过以下方式调用此方法:
DataSet dsPerson = GetPerson(new[]{"FirstName", "LastName", "Age"});
答案 1 :(得分:1)
如果您不想更改数据库中的SP,请更改.cs文件中的GetPerson()方法:
public DataSet GetPerson()
{
SqlCommand _select = new SqlCommand();
_select.CommandText = "SP-GetAllPerson";
_select.CommandType = System.Data.CommandType.StoredProcedure;
_select.Connection = Connection.GetConnection;
SqlDataAdapter _daPerson = new SqlDataAdapter(_select);
DataSet _personDs = new DataSet();
_daPerson.Fill(_personDs, "[TBL_Person]");
_personDs.Tables["TBL_Person"].Columns.Remove("Person_ID");
_personDs.Tables["TBL_Person"].Columns.Remove("Location");
return _personDs;
}
否则,您可以相应地更改存储过程。