我试图对DataTable对象执行LINQ查询,但奇怪的是,我发现对DataTables执行此类查询并不简单。例如: var results = from myRow in myDataTable where results.Field("RowNo") == 1 select results; 这是不允许的。如何获得类似的效果? 我很惊讶在数据表上不允许使用LINQ查询!
目前,我正在使用: DataTable dt = CreateDataTableInSomeWay(); List<DataRow> list = new List<DataRow>(); foreach (DataRow dr in dt.Rows) { list.Add(dr); } 有没有更好/魔术的方法?
如何在不使用触发器或不以任何方式修改数据库结构的情况下监视SQL Server数据库中对表的更改?我首选的编程环境是.NET和C#。 我希望能够支持任何SQL Server 2000 SP4或更高版本。我的应用程序是另一家公司产品的附加数据可视化。我们的客户群有成千上万,因此我不想在每次安装时都提出修改第三方供应商表的要求。 通过“改变到餐桌”我平均变化表数据,而不是更改为表结构。 最终,我希望更改能够触发我的应用程序中的事件,而不是必须间隔检查更改。 根据我的要求(不进行触发器或架构修改,SQL Server 2000和2005),最好的操作方案似乎是BINARY_CHECKSUM在T-SQL中使用该函数。我计划实现的方式是这样的: 每X秒运行以下查询: SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM sample_table WITH (NOLOCK); 并将其与储值进行比较。如果值已更改,请使用查询逐行浏览表: SELECT row_id, BINARY_CHECKSUM(*) FROM sample_table WITH (NOLOCK); 并将返回的校验和与存储的值进行比较。
我正在寻找一种简单的方法来克隆DataRow。有点像为该行拍摄快照并将其保存。然后可以自由更改原始Row的值,但我们还有另一个已保存的副本,该副本不变。这是正确的方法吗? DataRow Source, Destination; // Assume we create some columns and fill them with values Destination.ItemArray = Source.ItemArray; 这是否只是将Snapshot的ItemArray引用设置为指向Source中的那个,还是实际上是单独制作一个副本?我应该这样做吗? Destination.ItemArray = Source.ItemArray.Clone(); 编辑:我不认为第二个代码片段实际上可以编译。