C# 使用LINQ获取字典中ID所在的所有结果
我现在有类似的东西,它只搜索1个LabIDC# 使用LINQ获取字典中ID所在的所有结果,c#,linq,C#,Linq,我现在有类似的东西,它只搜索1个LabID List<Expense> lstExpenses = (from l in ctx.Expenses where l.datLab.Lab_ID == labID select l).ToList<Expense>(); List lstExpenses=(从ctx.Expenses中的l开始) 其中l.dat
List<Expense> lstExpenses = (from l in ctx.Expenses
where l.datLab.Lab_ID == labID
select l).ToList<Expense>();
List lstExpenses=(从ctx.Expenses中的l开始)
其中l.datLab.Lab_ID==labID
选择l).ToList();
如果Lab_ID在我拥有的字典中,我如何返回所有结果:
以下函数返回一个字典值:
report.GetLabChildren(labID,“All”)代码>采用,
格式。如果要在linq to对象中执行过滤,我只想在
上搜索:
var query = ctx.Expenses.AsEnumerable()
.Where(expense => dictionary.ContainsKey(espense.Lab_Id));
如果您需要可以转换到数据库的内容:
var ids = dictionary.Keys.ToList();
var query = ctx.Expenses
.Where(expense => ids.Contains(expense.Lab_Id));
注意,只有当字典中的键少于几千个时,这才起作用,因为它被转换为SQLIN子句。如果您有更多内容,请将它们上载到临时表并连接两个表,或者拉取整个费用表并使用linq to objects版本。如果要在linq to objects中执行筛选,请执行以下操作:
var query = ctx.Expenses.AsEnumerable()
.Where(expense => dictionary.ContainsKey(espense.Lab_Id));
如果您需要可以转换到数据库的内容:
var ids = dictionary.Keys.ToList();
var query = ctx.Expenses
.Where(expense => ids.Contains(expense.Lab_Id));
注意,只有当字典中的键少于几千个时,这才起作用,因为它被转换为SQLIN子句。如果您有更多信息,请将它们上载到临时表并连接两个表,或者拉取整个费用表并使用linq to objects版本。我不确定您要问什么,但看起来您正在寻找ContainsKey
方法:
var values = report.GetLabChildren(labID, "All");
List<Expense> lstExpenses = (from l in ctx.Expenses
where values.ContainsKey(l.datLab.Lab_ID)
select l).ToList<Expense>();
var values=report.GetLabChildren(labID,“All”);
列表LST费用=(从ctx.Expenses中的l开始)
其中values.ContainsKey(l.datLab.Lab_ID)
选择l).ToList();
我不确定,但它可能无法与LINQ to实体一起工作。如果发生以下情况,请使用:
List<Expense> lstExpenses = (from l in ctx.Expenses
where values.Keys.Contains(l.datLab.Lab_ID)
select l).ToList<Expense>();
List lstExpenses=(从ctx.Expenses中的l开始)
其中values.Keys.Contains(l.datLab.Lab\u ID)
选择l).ToList();
我不是100%确定你在问什么,但看起来你在寻找ContainsKey
方法:
var values = report.GetLabChildren(labID, "All");
List<Expense> lstExpenses = (from l in ctx.Expenses
where values.ContainsKey(l.datLab.Lab_ID)
select l).ToList<Expense>();
var values=report.GetLabChildren(labID,“All”);
列表LST费用=(从ctx.Expenses中的l开始)
其中values.ContainsKey(l.datLab.Lab_ID)
选择l).ToList();
我不确定,但它可能无法与LINQ to实体一起工作。如果发生以下情况,请使用:
List<Expense> lstExpenses = (from l in ctx.Expenses
where values.Keys.Contains(l.datLab.Lab_ID)
select l).ToList<Expense>();
List lstExpenses=(从ctx.Expenses中的l开始)
其中values.Keys.Contains(l.datLab.Lab\u ID)
选择l).ToList();
列出LST费用=(从ctx.Expenses中的l开始)
其中report.GetLabChildren(labID,“All”).Keys.Contains(i.Lab\u ID)
选择l).ToList();
列出LST费用=(从ctx.Expenses中的l开始)
其中report.GetLabChildren(labID,“All”).Keys.Contains(i.Lab\u ID)
选择l).ToList();
我不太明白。您是否试图获取Lab_ID是一个值范围的所有项目?不是真正的范围,它可能是1,10,25,我只想匹配这三个,而不是介于两者之间的值,因此1,10,25在字典中?它们是钥匙吗?值?@SystemDown根据问题,它们是关键。我不确定我是否理解。您是否试图获取Lab_ID是一个值范围的所有项目?不是真正的范围,它可能是1,10,25,我只想匹配这三个,而不是介于两者之间的值,因此1,10,25在字典中?它们是钥匙吗?值?@SystemDown根据问题,它们是关键。