日期:2014-05-20  浏览次数:21118 次

LinqDataSource.Where,要使用到IN该怎么写啊?
比如 SELECT * FROM TABLE1 WHERE TID IN(1,2,3,4,5)

然后使用了LinqDataSource控件,在页面load的时候给LinqDataSource.Where赋值

我写的 LinqDataSource.Where = "TID IN(1,2,3,4,5)";
这样不行,到底怎样写才对啊?

------解决方案--------------------
List<int> list = new List<int>()
{
1,2,3,4,5
};

LinqDataSource.Table1.Where(tb=>list.Constants(tb.TID)).Select(tb=>tb)
------解决方案--------------------
C# code
SELECT * FROM TABLE1 WHERE TID IN(1,2,3,4,5)
===========
var query=from t in Table1
          where new int[]{1,2,3,4,5}.Contains(t.TID)
          select t;

------解决方案--------------------
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.linqdatasource.where.aspx
http://social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/051814c6-9db1-410e-8af7-783083e1bdf9/

------解决方案--------------------
List<int> productIds= new List<int>( ); 
var products = (from p in context.Products
where productIds.Contains(p.ProductId)
select p).ToList().OrderBy(a=>a.ProductId).ToList()
------解决方案--------------------
服务器控件 好久没用了。
linq中的 in 的话,可以用 Contains \Any等
List<int> list = new List<int>()
{
1,2,3,4,5
};
 LinqDataSource.Table1 .Where(w=> list.Contains(w.TID));
 LinqDataSource.Table1 .Where(w=> list.Any(a=>a==w.TID));

------解决方案--------------------
上面都答非所问啊 他问的是那个页面数据源控件
我是这么解决的 IN(1,2,3,4,5)
换成 LinqDataSource.Where = "TID==1 or TID==2 or...." 用循环拼接的; 可用@_@ 其他暂时没找到法
------解决方案--------------------

探讨
C# code
SELECT * FROM TABLE1 WHERE TID IN(1,2,3,4,5)
===========
var query=from t in Table1
where new int[]{1,2,3,4,5}.Contains(t.TID)
select t;

http://blog.csdn.net/q10777……

------解决方案--------------------
这个好用
探讨
C# code
SELECT * FROM TABLE1 WHERE TID IN(1,2,3,4,5)
===========
var query=from t in Table1
where new int[]{1,2,3,4,5}.Contains(t.TID)
select t;

http://blog.csdn.net/q10777……

------解决方案--------------------
探讨

C# code
SELECT * FROM TABLE1 WHERE TID IN(1,2,3,4,5)
===========
var query=from t in Table1
where new int[]{1,2,3,4,5}.Contains(t.TID)
select t;

http://blog.csdn.net/q107770540……