我有一个对象列表,它有一个带有几个out参数的方法。我如何在每个对象上调用此方法,获取out参数值并在查询中稍后使用它们,可能用于检查where子句?
这是否可行,如果有的话,可以通过示例代码进行恶意展示。
谢谢!
答案 0 :(得分:2)
也许你应该为每个循环使用a然后使用你的查询?
(实际上,在不知道你的代码的情况下,很难说在这种情况下最擅长什么)
答案 1 :(得分:2)
以下是访问LINQ查询中out参数值的一种方法。我不认为你可以使用out-values来说明后面选择的位置:list.Where(...).Select(...)
List<MyClass> list; // Initialize
Func<MyClass, bool> fun = f =>
{
int a, b;
f.MyMethod(out a, out b);
return a == b;
};
list.Where(fun);
MyClass的实现方式是这样的;
public class MyClass
{
public void MyMethod(out int a, out int b)
{
// Implementation
}
}
答案 2 :(得分:1)
这使用.NET 4.0中的Tuple<T1,T2>
,但可以适用于早期版本:
//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);
}