One contributor suggested me to use DataTable.Rows.Find(), especially when we are searching by the Index column of that DataTable. I never heard of this, so I keep it noted as an additional advise to my colleague.
After much thinking, I somehow became doubting that DataTable.Select() is the actual source of the bottleneck. So this morning I asked her to run the profiler to check the performance of her program. The profiler’s result proven my doubt. The bottleneck was caused by multiple calling of Web Services.
All this time I already have a little discomfort with Web Service. I thought the overhead of transmitting data by text XML is too much, especially when you have thousands of records transmitted at an instance. So I spent a little time to googling for opinions that against Web Service (Web Service here refers to those web services that commonly implemented using SOAP). Eventually, I stumbled to this page. I highly recommend it. It’s funny, it’s witty and you might want to use it as an argument when debating against SOAP proponents