有用过System.Linq.Dynamic 进行动态LINQ文的吗? 其中动态LINQ  中SQL中的IN该怎么做?? 下面几种写法都不对.请教??
有用过System.Linq.Dynamic 进行动态LINQ文的吗? 其中动态LINQ  中SQL中的IN该怎么做?? 下面几种写法都不对.请教??
string[] strList = junUserList.ToArray();
①  错
where1 = where1 + "a.UserID in (\"0000001010\",\"0000001040\")) ";
② 错.
where1 = where1 + " ((@" + j + ").Contains(a.UserID)) ";
smartfolderTBl.Where(where1,strList).Select(strSelect);
改怎么样做呀.?????
------解决方案--------------------
/// <summary>
       /// 根据条件查询所有信息
       /// </summary>
       /// <param name="bargainId">产品编号</param>
       /// <param name="modelQ">条件列表</param>
       /// <param name="pageSize">分页大小</param>
       /// <param name="pageIndex">当前页码</param>
       /// <param name="pageCount">总页数</param>
       /// <param name="Counts">总记录数</param>
       /// <returns></returns>
       public IQueryable GetList(int bargainId,SJJ.WhereModel.furniture_bargain_review modelQ, int pageSize, int pageIndex, out int pageCount, out int Counts)
       {
           //初始化数据库连接字符串·开始
           setConnectionString();
           //初始化数据库连接字符串·结束
           pageCount = Counts = 0;
           var objQueryWhere = linqWhere.True<SJJ.LINQ.furniture_bargain_review>();
           #region 生成判断条件
           if (modelQ != null)
           {
               //评论·时间
               if (modelQ.furniture_bargain_review_Date_begin != null && modelQ.furniture_bargain_review_Date_end != null)
               {
                   objQueryWhere = objQueryWhere.And(p => p.furniture_bargain_review_Date >= modelQ.furniture_bargain_review_Date_begin);
                   objQueryWhere = objQueryWhere.And(p => p.furniture_bargain_review_Date <= modelQ.furniture_bargain_review_Date_end);
               }
               //评论·名称
               if (!string.IsNullOrEmpty(modelQ.furniture_bargain_review_Name))
               {
                   objQueryWhere = objQueryWhere.And(p => p.furniture_bargain_review_Name.Contains(modelQ.furniture_bargain_review_Name));
               }
               //评论·Email
               if (!string.IsNullOrEmpty(modelQ.furniture_bargain_review_Email))
               {
                   objQueryWhere = objQueryWhere.And(p => p.furniture_bargain_review_Email.Contains(modelQ.furniture_bargain_review_Email));
               }
               //评论·内容
               if (!string.IsNullOrEmpty(modelQ.furniture_bargain_review_Body))
               {
                   objQueryWhere = objQueryWhere.And(p => p.furniture_bargain_review_Body.Contains(modelQ.furniture_bargain_review_Body));
               }               
           }
           #endregion 生成判断条件
           var localTable = (from objTableA in objDataContext.furniture_bargain_review.Where(objQueryWhere)
                             where objTableA.furniture_bargain_Id == bargainId
                             join objTableB in objDataContext.furniture_bargain on objTableA.furniture_bargain_Id equals objTableB.furniture_bargain_Id
                             select new
                             {
                                 objTableA.furniture_bargain_review_Id,
                                 objTableA.furniture_bargain_review_Date,
                                 objTableB.furniture_bargain_Id,
                                 objTableB.furniture_bargain_Name,
                                 objTableA.furniture_bargain_review_Name,
                                 objTableA.furniture_bargain_review_Email,
                                 objTableA.furniture_bargain_review_Ip,
                                 objTableA.furniture_bargain_review_Body
                             }).OrderByDescending(p => p.furniture_bargain_review_Date);
           Counts = localTable.Count();
           if (Counts % pageSize != 0)
           {
               pageCount = Counts / pageSize + 1;
           }
           else
           {
               pageCount = Counts / pageSize;
           }
           return localTable.Skip((pageIndex - 1) * pageSize).Take(pageSize);
       }
------解决方案--------------------
1、添加类PredicateExtensions.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
namespace Www24100Net.PlayingWithLinq
{
   public static class PredicateExtensions
   {
       public static Expression<Func<T, bool>> True<T>() { return f => true; }
       public static Expression<Func<T, bool>> False<T>() { return f => false; }
       public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expression1,
                                                           Expression<Func<T, bool>> expression2)
       {
           var invokedExpression = Expression.Invoke(expression2, expression1.Parameters.Cast<Expression>());
           return Expression.Lambda<Func<T, bool>>
                 (Expression.Or(expression1.Body, invokedExpression), expression1.Parameters);
       }
       public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expression1,
                                                           Expression<Func<T, bool>> expression2)
       {
           var invokedExpression = Expression.Invoke(expression2, expression1.Parameters.Cast<Expression>());
           return Expression.Lambda<Func<T, bool>>
                 (Expression.And(expression1.Body, invokedExpression), expression1.Parameters);
       }
   }
}
2、Linq动态查询
       private void bind(int pageIndex)
       {
           if(pageIndex < 1){pageIndex = 1;}
           var predicate = PredicateExtensions.True<CityName>();
           string _fprovince = "福建";
           if (!string.IsNullOrEmpty(_fprovince))
           {
               predicate = predicate.And(p => p.FProvince.Contains(_fprovince));
           }
           string _fcity = "厦门";
           if (!string.IsNullOrEmpty(_fcity))
           {
               predicate = predicate.And(p => p.FCity.Contains(_fcity));
           }
           string _ftype = "联通";
           if (!string.IsNullOrEmpty(_ftype))
           {
               predicate = predicate.And(p => p.FType.Contains(_ftype));
           }
           DataClassesDataContext DBCity = new DataClassesDataContext();
           var query = DBCity.CityName.Where(predicate);
           AspNetPager1.RecordCount = query.Count();
           this.Label1.Text = AspNetPager1.RecordCount.ToString();
           intStartRow = intPageSize * (pageIndex-1) ;
           intEndRow = pageIndex * intPageSize;
           GridView1.DataSource = query.OrderBy(p => p.FSimseg).Skip(intStartRow).Take(intPageSize);
           GridView1.DataBind();
       }