3

LINQPadでは、データベース内のすべてのテーブルと各テーブルの行数を出力しようとしています。

this.Mapping.GetTables().Select(o => new { TableName = o.TableName, RowCount = ? })

行数はどのように計算できますか?

4

6 に答える 6

3

同じことをする必要があり、データを含むテーブルのみを探していました。データが深くネストされているため、ここから何を引き出すかについて注意する必要があることがすぐにわかりました。以下のクエリは、私のマシンで実行するのに 1 秒もかからず、データベースには約 266 個のテーブル (ビューを除く) があります。これがあなたの質問に答えることを願っています。

 var list = this.Mapping.GetTables()    
     .Select(o => new { 
    TableName = o.TableName, 
    Type_ = o.RowType.Type, 
    IsEntity = o.RowType.IsEntity,
    RowCount = this.GetTable(o.RowType.Type).Cast<object>().Count(),
    })
    .Where (o => o.IsEntity && o.RowCount > 0)
    .ToList();

 list.Dump();
于 2014-04-10T21:17:53.963 に答える
2
this.Mapping.GetTables().Select(o => new { 
    TableName = o.TableName, 
    RowCount = (
        (IEnumerable<object>)this.GetType().GetProperty(
            o.TableName.Substring(1, o.TableName.Length-2)
    ).GetValue(this, null))
    .Count()
}).Dump();

名前でテーブルを検索する方法を示してくれたJasonからのこの回答に敬意を表します。

于 2012-09-04T14:46:30.977 に答える
1

これを試して:

var list = this.Mapping.GetTables()
    .Select(o => new { TableName = o.TableName, Type_ = o.Row.Type, RowCount = 0 }).ToList();

list.ForEach(x=>x.RowCount  = this.GetTable(x.Type_).Count);
list.Select(o=> new { TableName = o.TableName, RowCount = 0 });
于 2010-08-12T12:08:27.790 に答える
0

または Mapping を使用せずに:

this.GetType().GetProperties().Where(p => p.DeclaringType == typeof(TypedDataContext)).Select(t => new 
{ 
    TableName = t.Name,
    RowCount = ((IEnumerable<object>)(this.GetType().GetProperty(t.Name).GetValue(this, null))).Count()
}).Dump();
于 2014-05-28T09:49:45.937 に答える
0

これを試して:

var list = from o in this.Mapping.GetTables()
let rowCount = ExecuteQuery<int>("select count(*) from "+ o.TableName).FirstOrDefault()
 select new {
    TableName = o.TableName,
        RowCount = rowCount
  };
于 2012-09-03T11:30:12.653 に答える
-4

これは LinqPad の問題ではなく、Linq の問題です。しかし、LinqPad の素敵なヒントを教えてください。クエリに .Dump() を追加して、何が得られるかを確認してください - とてもクールです。

this.Mapping.GetTables().Select(o => new { TableName = o.TableName, RowCount = ? }).Dump()
于 2010-08-12T12:08:31.363 に答える