我正在通过LINQPAD探索一个非常混乱的SQL数据库,我希望获得所有表的列表,其中至少有一列是string类型。 此外,我想计算上面提到的每列的不同值的计数。
我试图混淆一些东西,但我的LINQ生锈了,无论如何我主要用它来LINQ to Objects ......
foreach(var table in Mapping.GetTables())
{
(
from dm in table.RowType.DataMembers
where dm.Type == typeof(string)
select new { dm.Name , dm.DbType , dm.Type , dm.MappedName, dm.IsPrimaryKey }
)
}
答案 0 :(得分:1)
嗯,我认为你几乎走在正确的轨道上...以下似乎有效(虽然在我测试的数据库上速度很慢):
from table in Mapping.GetTables()
from member in table.RowType.DataMembers
where member.Type == typeof(string)
let count = ExecuteQuery<int>(String.Format(
"SELECT COUNT(DISTINCT {0}) FROM {1}",
member.Name,
table.TableName)).FirstOrDefault()
select new { table.TableName, member.Name, count }