Well, you can, as Pete showed you. But it's not really a good idea, and probably won't work as you want it to. It would be better to change the method so that it doesn't use a ref or out parameter. If you can't change it, then write a wrapper method. You can either return a specific type to encapsulate the two returned values, or use a Tuple[^]. In C#7, there will even be built-in language support for tuples[^], which will make this much easier.
static class YourExtensions
{
// NB: In this case, a specific type would be better, since it's not
// immediately obvious which tuple item represents which value.
public static Tuple<string, string> GetValue(this YourType id, int theParameter)
{
string strValue = null;
string result = id.GetValue(theParameter, ref strValue);
return Tuple.Create(result, strValue);
}
}
...
var objCol = from id in ids
let value = id.GetValue(2)
where value.Item1 == "6"
select new { id, strValue = value.Item2 };
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer