2011-08-10 5 views
0

データベースに多数のCSVをインポートしました。それぞれがいくつかの共通の列を持つテーブルになりました。私はLinq2Sqlを使用してコピー/修正を行わずにそれらを組み合わせることができるかどうかを判断しようとしています。LINQ(l2s)クエリをエンティティのリストに適用する方法はありますか。

Dynamic LINQ Queries 私はこれを行うことができますか他のオプションはありますか?

クエリは次のとおりです。

var excelRows = 
    from c in Apr10s // <-- GOAL - run on Apr10s, May10s, Jun10s, ... etc.... 
    where 
     c.VolumeStats != null 
     && c.VolumeStats > 0 
     && c.Costperunit != null 
     && c.Costperunit > 0 
    select new 
    { 
     c.Publisher, 
     c.CampaignNumber, 
     c.Campaign, 
     c.RevenuePerUnit, 
     c.Costperunit, 
     c.VolumeStats, 
     c.Rep 
    }; 
var reportItems = 
    from c in excelRows 
    select new 
    { 
     Publisher = c.Publisher, 
     Campaign = c.Campaign, 
     Payout = c.Costperunit, 
     Actions = c.VolumeStats, 
     Revenue = (decimal)c.Costperunit.Value * (decimal)c.VolumeStats.Value 
    }; 

var reportItemsByPublisher = reportItems.GroupBy(c => c.Publisher); 
+0

のようなものを、オブジェクトを作成し、各テーブルのためにあなたの文脈からそれを返すには、あなただけのデータを統合するためのSQLスクリプトを書いたほうが良いではありません? – kprobst

+0

本当です。彼らが私にこれをもう一度やろうと依頼するかもしれないので、再使用可能なコードを作ることができればいいです。 –

答えて

0

ない、あまりにも簡単。 Linq to Entitesを使用している場合は、ランタイム変数テーブル名を使用してテーブルから選択するのが非常に簡単です。 LinqからSQLへの挑戦はますます重要です。

データベース内のすべてのデータを統合するストアドプロシージャまたはビューを作成することを検討することもできます。これはデータの問題であり、アプリケーションの問題ではありません。

edit:Entity Frameworkを使用する場合は、さまざまなオプションがあります。最初は executing SQL & returning objectsです。また

、これは1回限りのものである場合には、この

using (var c = new myContext()) 
{ 
    var result1 = c.CreateObjectSet<MyType>("table1"); 
    result1.Where(x => blah).Select(y => etc) 

    var result2 = c.CreateObjectSet<MyType>("table2"); 
    var result3 = c.CreateObjectSet<MyType>("table3"); 
} 
+0

私はEFに切り替えることができます - あなたが参照する機能の対応するドキュメントを教えてくれますか? –