Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ获取字典中ID所在的所有结果_C#_Linq - Fatal编程技术网

C# 使用LINQ获取字典中ID所在的所有结果

C# 使用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

我现在有类似的东西,它只搜索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.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根据问题,它们是关键。