我有一个基于复杂查询返回记录集(结果集 A)的存储过程,并且记录按特定顺序排列。我有另一个查询,它从另一个表(结果集 B)返回 ID 值。
我想做类似“从结果集 A 中获取记录,其中 id 存在于(结果集 B)中”。
我需要在代码隐藏中执行此操作。任何想法如何去做这件事?
我有一个基于复杂查询返回记录集(结果集 A)的存储过程,并且记录按特定顺序排列。我有另一个查询,它从另一个表(结果集 B)返回 ID 值。
我想做类似“从结果集 A 中获取记录,其中 id 存在于(结果集 B)中”。
我需要在代码隐藏中执行此操作。任何想法如何去做这件事?
您可以使用这种扩展方法 - 基于产量和Linq Contains operator
public static IEnumerable<string> Select(this DataReader reader, int index)
{
while (reader.Read())
{
yield return reader[index].ToString();
}
}
注意:您有两个记录集 reader1 和 reader2,选择扩展方法获取项目 IEnumerable 的列表。
var list1 = reader1.Select(0); //Search on first column;
var list2 = reader2.Select(0);
//Get list items of values (index 0) of list2, who exist in list1.
var result = from item on list2.Select(0)
where list1.Contains(item)
select item;