Я получил много разных таблиц SQL с одинаковым дизайном - у всех есть идентификаторы и два строковых поля с одинаковыми именами.Я не хочу писать набор функций для получения значений из этих таблиц, я хочу иметь одну процедуру с таблицей в качестве параметра.Но когда я начинаю получать данные, он говорит: «Не могу преобразовать тип бла-бла-бла».Нужно, чтобы тип был передан напрямую, и это то, чего я хочу избежать.Что делать?
/*
defined tables:
create table tableA
(
id int identity not null,
type_code nvarchar(50) not null,
type_description nvarchar(1000) not null
)
same SQL for tableB and tableC
tableA, tableB, tableC
*/
void getAnyId( Table tbl, string codeFilter)
{
var p=(tableA)tbl; // HERE I GET EXCEPTION !!!
var id = p.Where( r=> r.code == codeFilter);
if( id.Count() != 1 )
return null;
return id.id;
}
Другой пример:
public Dictionary<string,string> readDataSchemeTypes( tvbaseDataContext dc )
{
Dictionary<string,string> ds = new Dictionary<string,string>();
foreach( var ast in dc.tableA)
ds.Add( ast.type_code, ast.type_description );
return ds;
}
Это работает, но мне нужен набор функций, по одной на каждую таблицу.
public Dictionary<string, string> readAnySchemeTypes<T>(System.Data.Linq.Table<T> table) where T:System.Data.Linq.ITable
{
Dictionary<string, string> ds = new Dictionary<string, string>();
foreach (var ast in table)
ds.Add(ast.type_code, ast.type_description); // type_code and type_description are not defined for type T
return ds;
}
Этопример не компилируется.