根据特定条件C#从DataTable中删除记录

时间:2012-09-12 12:20:39

标签: c# asp.net linq

我有一个DataTable(dtProperty),其中包含以下列:

  
      
  1. 属性ID,
  2.   
  3. 列表项
  4.   
  5. RoomId,
  6.   
  7. RateId,
  8.   
  9. Roomsequence
  10.   

我有2个变量RoomCount和PID,其值对于PropertyId,RoomId,RateId的特定组合是已知的,Roomsequence应该具有小于等于RoomCount的所有值。

  

如果RoomCount的值为3且PID = 10212,那么对于PropertyId的部分值,RoomId,RateId :: 10212,2010,3101(在我们的例子中)RoomSequence应该具有值1,2,3。

如果PropertyId,RoomId,RateId的任何部分组合不符合标准,那么我们

应该从数据表中删除行。

在下面列出的表格中,我们仅保留前3行和后3行

PropertyId  RoomID  RateID   RoomSequence
10212       2010    3101     1
10212       2010    3101     2
10212       2010    3101     3
10212       2011    3100     3
10212       2012    3101     1
10212       2012    3101     2
10212       2014    3101     1
10212       2014    3101     2
10212       2014    3101     3

1 个答案:

答案 0 :(得分:0)

    var filteredTable = (from row in dtRoom.AsEnumerable()
      where row.Field<int>("RoomSequence") <=
      GetRoomCount(row.Field<int>("PropertyId"), 
                   row.Field<int>("RoomId"), 
                   row.Field<int>("RateID"))
    select row); //ToDataTable()

根据您的房间序列过滤器,这应该为您提供一个包含数据的新数据表 当然,你应该从方法GetRoomCount内部返回RoomCount,这取决于3个值。