2013-04-09 4 views
2

Я хочу получить отдельные записи на основе некоторых полей. Я использую следующий метод:Отдельные записи в DataTable

string[] TobeDistinct = { "PKID" }; 
DataTable dtDistinct = GetDistinctRecords(ds.Tables[0], TobeDistinct); 
DataSet ds2 = new System.Data.DataSet(); 
ds2.Tables.Add(dtDistinct); 

public static DataTable GetDistinctRecords(DataTable dt, string[] Columns) 
{ 
    DataTable dtUniqRecords = new DataTable(); 
    dtUniqRecords = dt.DefaultView.ToTable(true, Columns); 
    return dtUniqRecords; 
} 

Это дает мне разные записи, но приходят только две записи. Придет только два разных PKID. Например, у меня есть несколько записей с PKID 10,12,14,16, но результат - 2 строки с PKID 10 и 12. Больше двух строк нет, но должно быть там. Что мне нужно сделать?

Я следую за эту статью: http://www.codeproject.com/Tips/153008/Select-DISTINCT-records-based-on-specified-fields

enter image description here

+1

Невозможно воспроизвести вашу проблему. Вы уверены, что передаете правильный стол в GetDistinctRecords? – Steve

+1

Возможный дубликат [Как выбрать отдельные строки в datatable и хранить в массиве.] (Http://stackoverflow.com/questions/1199176/how-to-select-distinct-rows-in-a-datatable-and -store-in-a-array) – JNF

ответ

11

Вы можете использовать, как следует

DataView view = new DataView(table); 
DataTable distinctValues = view.ToTable(true, "Column1", "Column2" ...); 

Подробнее
How to select distinct rows in a datatable and store into an array

+0

это совсем не действует! получаются те же две строки. Что мне не хватает, сэр? –

+0

будет существовать какое-то ведущее или конечное пространство между try' trim function, при выборе формы записи базы данных –

+0

это может быть связано с пространством между ними. на самом деле у меня нет пустой записи поля в pkid. –

6

Можете ли вы попробовать это?

var myResult = dt.AsEnumerable().Select(c => (DataRow)c["MyColumn"]).Distinct().ToList(); 
Смежные вопросы