2011-08-10 4 views
0

데이터베이스에 여러 개의 CSV를 가져 왔는데, 각각은 이제 몇 가지 공통 열이있는 테이블입니다. Linq2Sql을 사용하여 복사/수정하지 않고 함께 결합 할 수 있는지 파악하려고합니다.entite 목록에 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를 사용하는 경우 런타임 변수 테이블 이름을 사용하여 테이블에서 선택하는 것이 매우 간단합니다. SQL에 Linq는 더 많은 도전입니다.

대신 데이터베이스의 모든 데이터를 통합하는 저장 프로 시저 또는 뷰를 작성하는 것이 좋습니다. 이것은 데이터 문제이며 응용 프로그램 문제는 아닙니다.

편집 : Entity Framework를 사용하려는 경우 다양한 옵션이 있습니다. 첫 번째는 executing SQL & returning objects입니다.

또는 객체를 생성하고,이 경우,이

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로 전환하게되어 기쁩니다 - 참조하는 기능에 대한 해당 문서를 가르쳐 주시겠습니까? –

관련 문제