A: 

You could use a JOIN clause:

from pfv in dC.ProductFieldValues
join filter in filterList on (
    pfv.ProductTypeFieldID == filter.ProductTypeFieldID 
    && pfv.ValueNumber == filter.ValueNumber
)
select new ProductStruct                           
{                               
    ProductID = pfv.ProductID                           
}
Manu
I think this would only work if the original request was materialized and you did the join with LINQ to Objects. I would assume that the OP would want the filtering to be done on the SQL server otherwise he could just iterate through them and remove the ones he doesn't want.
tvanfosson
+2  A: 
Joshua
I think the idea to use Dynamic LINQ and build the where clause as a string has merit.
tvanfosson
You might want to post a summary here, so your answer stands on its own.
tvanfosson
A: 

Here is a simple example using IQueryable in VB.

Private Function GetZeroScoreWhere(ByVal qry As IQueryable(Of ScoreTest), ByVal score As ScoreTest) As IQueryable(Of ScoreTest)
    If score.CallType = ScoreTest.CallTypeEnum.XXX Then
        Return qry.Where(Function(c) c.AvgScore.Value = 0 Or c.Zero.Trim <> String.Empty)
    End If

    Return qry.Where(Function(c) c.ValidScore.Value = 0)
End Function

The same code in C#:

private IQueryable<ScoreTest> GetZeroScoreWhere(IQueryable<ScoreTest> qry, ScoreTest score)
{
    if(score.CallType == ScoreTest.CallTypeEnum.XXX)
    {
        Return qry.Where(c => c.AvgScore.Value == 0 || c.Zero.Trim != String.Empty)
    }

    Return qry.Where(c => c.ValidScore.Value == 0)    
}
TGnat
A: 

The answer I got in a similar question worked for me:

http://stackoverflow.com/questions/180405/how-do-you-add-dynamic-where-clauses-to-a-linq-query/180475#180475

(The answer was use a Predicate Builder)

Nick