2011-12-21 3 views
0

Я хочу удалить datarow из EnumerableRowCollection. Это возможно?. Я использую EnumerableRowCollection вместо общей переменной var, чтобы понять мой контекст.Как удалить DataRow из EnumerableRowCollection <DataRow>?

EnumerableRowCollection<DataRow> results = from myRow in myDataTable.AsEnumerable() 
              where results.Field("RowNo") == 1 
              select results; 

foreach(DataRow result in results) 
{ 
    if(resultOk(result)) 
    delete result from results?? 
} 
+0

Я предполагаю, что вы знаете, что удаление записи из EnumerableRowCollection не удалит ее из хранилища данных, правильно? – Scottie

ответ

3

Наверняка вы не можете удалять элементы из коллекции вы перебор с использованием foreach. Это просто запрещено и приведет к исключению во время выполнения.

Вы можете просто хотите переместить эту логику в linq запроса:

EnumerableRowCollection<DataRow> results = from myRow in myDataTable.AsEnumerable() 
where myRow.Field("RowNo") == 1 && !resultOk(myRow) 
select myRow; // note that you're returning myRow, not results, like in your code 
// you need to pay attention to code samples you're providing to avoid misunderstanding 

Это вернет вам список с элементами, которые вы действительно хотите, без необходимости удаления этих элементов в foreach цикле.

+0

+1 Хороший ответ. Также стоит отметить, что даже если вы * можете * удалить элементы внутри цикла foreach, 'EnumerableRowCollection ' не предоставляет метод Remove ... –

+0

@pako, если в случае, если у меня есть EnumerableRowCollection подмножество результатов, как может удалить это подмножество? Я имею в виду If EnumerableRowCollection fullresults = getResults(); EnumerableRowCollection subresults = getSubResults(); EnumerableRowCollection finalResults = fullresults-subresults; Как это можно сделать: – user1061293

+0

Как отметил @djacobson, вы не можете удалить элементы из 'EnumerableRowCollection '. Однако вы можете сделать linq-запрос коллекции и получить новые результаты этого запроса, чтобы перезаписать предыдущую коллекцию, назначенную переменной. Или, если вы теперь хотите, какие элементы вам нужно удалить при запуске первого запроса, включите в первый запрос дополнительные фильтры в 'where'. – Pako

Смежные вопросы