C# 使用变量名在linq中查询表
我想知道在linq中使用变量是否可以查询db集 首先,我查询数据库以获取表名作为字符串,我想将其转换为表名:C# 使用变量名在linq中查询表,c#,entity-framework,linq,C#,Entity Framework,Linq,我想知道在linq中使用变量是否可以查询db集 首先,我查询数据库以获取表名作为字符串,我想将其转换为表名: public static string getTableName() { string tableName = string.Empty; var department= "Sales"; using (var context = new ALLDBEntities()) { ta
public static string getTableName()
{
string tableName = string.Empty;
var department= "Sales";
using (var context = new ALLDBEntities())
{
tableName = (from x in context.PROCESS_MATRIX
where x.AREA.Equals(product)
select x.ENTITY).FirstOrDefault();
}
return tableName;
}
现在我将我的表名作为字符串,我希望能够使用它来编写linq查询,但不是使用alldbEntities.sales
,而是使用table
。这样做的原因是因为我需要编写多个查询来执行相同的操作,因为我必须查询不同的表
有没有办法做到这一点
public List<sales> GetData(DateTime startDate, DateTime endDate)
{
var table = getTableName();
this.startDate = startDate.AddDays(-1);
this.endDate = endDate.AddDays(1);
using (var alldbEntities = new ALLDBEntities())
{
salesinfo = alldbEntities.sales.Where(f => f.Date >= this.startDate && f.Date <= this.endDate).ToList();
}
return salesinfo;
}
公共列表GetData(日期时间开始日期、日期时间结束日期)
{
var table=getTableName();
this.startDate=startDate.AddDays(-1);
this.endDate=endDate.AddDays(1);
使用(var alldbEntities=new alldbEntities())
{
salesinfo=alldbEntities.sales.Where(f=>f.Date>=this.startDate&&f.Date这是您的:
你可以做的事情:
动态表达式API是通过使用(导入)System.Linq.Dynamic命名空间引入范围的。下面是将动态表达式API应用于Linq to SQL数据源的示例
记住尝试innerIt和outerIt
如何使用outerIt的示例
static void Main(string[] args)
{
var claims = new List<Claim>();
claims.Add(new Claim { Balance = 100, Tags = new List<string> { "Blah", "Blah Blah" } });
claims.Add(new Claim { Balance = 500, Tags = new List<string> { "Dummy Tag", "Dummy tag 1" } });
// tags to be searched for
var tags = new List<string> { "New", "Blah" };
var parameters = new List<object>();
parameters.Add(tags);
var query = claims.AsQueryable().Where("Tags.Any(@0.Contains(outerIt)) AND Balance > 100", parameters.ToArray());
}
public class Claim
{
public decimal? Balance { get; set; }
public List<string> Tags { get; set; }
}
static void Main(字符串[]args)
{
var索赔=新列表();
添加(新的索赔{Balance=100,Tags=newlist{“Blah”,“Blah Blah”});
添加(新的索赔{Balance=500,Tags=newlist{“虚拟标签”,“虚拟标签1”});
//要搜索的标签
var tags=新列表{“new”,“Blah”};
var参数=新列表();
参数。添加(标签);
var query=claims.AsQueryable()。其中(“Tags.Any(@0.Contains(outerIt))和Balance>100”,parameters.ToArray());
}
公共类索赔
{
公共十进制?余额{get;set;}
公共列表标记{get;set;}
}
我想使用它来编写linq查询?
linq只指列表和表,而不是数据库本身的表名。仅仅因为您希望某些内容是可变的,并不一定意味着您需要使用字符串来执行此操作。您是否愿意接受使源表变为可变的解决方案,不使用字符串?@flater是的,我对其他解决方案持开放态度,这是我设想的方式,但它不起作用,可能只有外部链接的答案重复不是好答案。链接可能会被拒绝。直接将相关信息添加到您的答案中,以避免将来出现质量问题。我刚刚更新了我的a谢谢你的重播
static void Main(string[] args)
{
var claims = new List<Claim>();
claims.Add(new Claim { Balance = 100, Tags = new List<string> { "Blah", "Blah Blah" } });
claims.Add(new Claim { Balance = 500, Tags = new List<string> { "Dummy Tag", "Dummy tag 1" } });
// tags to be searched for
var tags = new List<string> { "New", "Blah" };
var parameters = new List<object>();
parameters.Add(tags);
var query = claims.AsQueryable().Where("Tags.Any(@0.Contains(outerIt)) AND Balance > 100", parameters.ToArray());
}
public class Claim
{
public decimal? Balance { get; set; }
public List<string> Tags { get; set; }
}