using System.Linq.Expressions;
using System.Collections.Generic;
public static void Main()
Get((i,s,d) => i == 0 && s == null && d == 0.0).Dump();
public static IList<(int, string, double)> Get(Expression<Func<int, string, double, bool>> predicate)
var list1 = new List<int>() { 0 };
var list2 = new List<string>() { null };
var list3 = new List<double>() { 0.0};
var query = (from c1 in list1
select ( c1, c2, c3 )).AsQueryable();
var param = Expression.Parameter(typeof((int, string, double)));
var fixedpredicate = Expression.Lambda<Func<(int, string, double), bool>>(Expression.Invoke(predicate, Expression.Field(param, "Item1"),
Expression.Field(param, "Item2"), Expression.Field(param, "Item3")), param);
return query.Where(fixedpredicate).ToList();