【发布时间】:2013-07-26 18:22:12
【问题描述】:
我基本上想写一个 DataTable 扩展方法来隐藏一个通用的 LINQ 查询。假设我有下面的数据表:
DataTable1
[ID] [NameOfThing] [DateOfThing]
1 'FirstName' 1/2/34
2 'SecondName' 5/6/78
DataTable2
[SomeFieldId] [NumberOfItems]
3 934
4 20393
我希望能够调用像string aString = DataTable1.GetDataItem(1,"ID","NameOfThing")这样的扩展方法
或int anInt = DataTable2.GetDataItem(3,"SomeFieldId","NumberOfItems")
我认为我的扩展方法看起来像这样:
public static var GetDataItem(this DataTable dTable, int idToMatch
,string fieldToMatchIdTo, string fieldToReturn)
{
DataRow [] results = dTable.AsEnumerable()
.Where(r => r.Field`<int>`(fieldToMatchTo) == idToMatch).ToArray();
return (var)results[0][fieldToReturn];
}
我知道这里缺少很多东西(转换为 var 似乎很可疑),但希望我能抓住我正在尝试做的事情的想法。有没有可能,或者还有其他好的选择吗?我可以为我想的每种返回类型编写一个扩展方法,但我希望那里有一种更通用的方法。
【问题讨论】:
-
您可以使用泛型,用 T 替换条形。稍后我将在平板电脑上发布代码。
标签: c# linq datatable extension-methods