2015-02-17 4 views
2

Я изучаю очень беспорядочную SQL-базу данных через LINQPAD, и мне бы хотелось получить список всех таблиц, где хотя бы один столбец имеет строку типа. Кроме того, я хотел бы вычислить количество различных значений для каждого столбца, упомянутого выше.Linq Как вычислить количество строк?

Я попытался перемешивать что-то вместе, но мой LINQ ржавый и в любом случае я использовал его в основном для LINQ к объектам ...

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 } 
) 
} 
+1

Что вы подразумеваете под «вычислением подсчета различных значений для каждого столбца»? –

+1

@ dav_i Предположим, у вас есть два строковых столбца, каждые 100 строк. Первый столбец имеет только два возможных выхода: «Да» или «Нет» - это два разных значения. Второй столбец содержит случайный текст, поэтому было бы 100 различных значений. –

ответ

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 } 
+0

Это выглядит хорошо! Мой коллега бомбил сервер в данный момент, к обратной связи потребуется некоторое время ... Я немного удивлен, что, кажется, нет чистого способа сделать счет в linq ... –

+0

Ну, это больше, что Linq- to-SQL не имеет ничего (насколько я могу судить), чтобы иметь возможность выбирать данные из динамически выбранной таблицы. LINQ сам по себе не виноват. –

+0

ну, это разочарование - я занимаюсь поисковой работой над сотнями столов, и динамический отбор был бы отличным .. –

Смежные вопросы