linq to datatable多条件动态查询,该怎么处理

linq to datatable多条件动态查询
Email                   ChineseName         CategoryID
a@a.com               产品名称A                  1,2,3
b@a.com               产品名称b                  5,6,7


三个动态条件
1.重复Email 大于/等于/小于N次      如果N为空就过滤这个条件
2.模糊查询chineseName     如果chineseName 为空就过滤这个条件
3.CategoryID只能输入一个ID,是否包含在CategoryID中      如果CategoryID为空就过滤这个条件
请问下是一起写 还是where过滤三次写啊 
------解决思路----------------------
查重复数据,你需要先sum+groupby,然后嵌套查询这个sum>1的
------解决思路----------------------
var query = from t in dt_Order.AsEnumerable()
                            group t by new
                            {
                                email = t.Field<string>("Email")
                            } into g
                            where g.Count()>1 //////
                            select new
                            {
                                Email = g.Key.email,
                                rowcount=g.Count()
                            };