如何将LINQ (l2s)查询应用于实体列表
本文关键字:查询 应用于 实体 列表 l2s LINQ | 更新日期: 2023-09-27 18:05:03
我在数据库中导入了许多csv,现在每个csv都是一个表,其中包含一些公共列。我想弄清楚我是否可以使用Linq2Sql将它们组合在一起而不做复制/修改。
我从来没有做过动态LINQ查询之类的事情这是我唯一能做的还是还有别的选择?
查询为:
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);
不太容易。如果您使用Linq to entities,那么使用运行时变量表名从表中进行选择非常简单。Linq to Sql更具有挑战性。
您可能会考虑编写一个存储过程或视图来整合数据库中的所有数据。这是数据问题,不是应用问题,对吧?
编辑:如果你想使用实体框架,你有多种选择。首先是执行SQL &返回对象。
或者,创建一个对象,并从上下文中为每个表返回它,如下所示
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");
}