Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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
.NET LINQ调用方法,在查询中使用Out参数并使用Out值_Linq_Methods_Return Value_Out Parameters - Fatal编程技术网

.NET LINQ调用方法,在查询中使用Out参数并使用Out值

.NET LINQ调用方法,在查询中使用Out参数并使用Out值,linq,methods,return-value,out-parameters,Linq,Methods,Return Value,Out Parameters,我有一个对象列表,其中有一个方法,它有两个out参数。如何在每个对象上调用此方法,获取out参数值并在稍后的查询中使用它们,可能是为了签入where子句 这是可能的,如果可能的话,请有人通过示例代码演示 谢谢 也许您应该为每个循环使用一个for,然后使用您的查询 实际上,在不知道代码的情况下,很难说在这种情况下最好做什么这里是访问LINQ查询中out参数值的一种方法。我不认为你可以在以后的选择列表中使用where中的out值 这将使用.NET 4.0中的版本,但可适用于早期版本: //e.g.,

我有一个对象列表,其中有一个方法,它有两个out参数。如何在每个对象上调用此方法,获取out参数值并在稍后的查询中使用它们,可能是为了签入where子句

这是可能的,如果可能的话,请有人通过示例代码演示


谢谢

也许您应该为每个循环使用一个for,然后使用您的查询


实际上,在不知道代码的情况下,很难说在这种情况下最好做什么

这里是访问LINQ查询中out参数值的一种方法。我不认为你可以在以后的选择列表中使用where中的out值

这将使用.NET 4.0中的版本,但可适用于早期版本:

//e.g., your method with out parameters
void YourMethod<T1,T2,T3>(T1 input, out T2 x, out T3 y) { /* assigns x & y */ }

//helper method for dealing with out params
Tuple<T2,T3> GetTupleOfTwoOutValues<T1,T2,T3>(T1 input)
{ 
   T2 a;
   T3 b;
   YourMethod(input, out a, out b);
   return Tuple.Create(a,b);
}

IEnumerable<Tuple<T2,T3>> LinqQuery<T1,T2,T3>(IEnumerable<T1> src, T2 comparisonObject)  
{
   return src.Select(GetTupleOfTwoOutValues)
             .Where(tuple => tuple.Item1 == comparisonObject);
}

对于我的特定场景,实现这一点最干净、最合理的方法是将循环和linq结合起来。我想我一直在试图过度使用Linq。是的,这种情况也时不时发生在我身上。保持简单!:
public class MyClass
{
    public void MyMethod(out int a, out int b)
    {
        // Implementation
    }
}
//e.g., your method with out parameters
void YourMethod<T1,T2,T3>(T1 input, out T2 x, out T3 y) { /* assigns x & y */ }

//helper method for dealing with out params
Tuple<T2,T3> GetTupleOfTwoOutValues<T1,T2,T3>(T1 input)
{ 
   T2 a;
   T3 b;
   YourMethod(input, out a, out b);
   return Tuple.Create(a,b);
}

IEnumerable<Tuple<T2,T3>> LinqQuery<T1,T2,T3>(IEnumerable<T1> src, T2 comparisonObject)  
{
   return src.Select(GetTupleOfTwoOutValues)
             .Where(tuple => tuple.Item1 == comparisonObject);
}