我在数据库中导入了许多CSV,现在每个都是一个包含一些常用列的表。我想弄清楚我是否可以使用Linq2Sql将它们组合在一起,而无需进行复制/修改。
我从未做过像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 :(得分:0)
不太容易。如果您使用Linq来实现,则使用运行时变量表名从表中进行选择非常简单。 Linq to Sql更具挑战性。
您可以改为考虑编写存储过程或合并数据库中所有数据的视图。这是一个数据问题,而不是应用程序问题,对吗?
编辑:如果您想使用实体框架,您有多种选择。首先是 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");
}