在Share Point 2010中,如何使用 in 语句?并且解决Boolean Contains[Int32](System.Collections.Generic.IEnumerable`1[System.Int32], Int32)的问题。

原创 2011年01月19日 11:39:00

LINQ To Entities如何实现查询 select * from tableA where id in (1,2,3,4) ?

 

通常想到的就是使用以下方法。

 

IList<int> ids = new List<int> { 2, 3, 4 };

 

= db.TasMenuInfo.Where(a => ids.Contains(a.MenuType)).ToList()


var list

 

 

 

 

如果你是在Share Point2010中,使用,则会报该错误,并且不管是换成字符串类型,还是其它的类型,都不行。错误信息如下:

 

LINQ to Entities 不识别方法“Boolean Contains[Int32](System.Collections.Generic.IEnumerable`1[System.Int32], Int32)”,因此该方法无法转换为存储表达式。

 

我仔细查了一下,原来发现,Share Point 2010 的.net 版本是.net 3.5 的,也就是说在.net 3.5中是不支持泛型List<T>.Contains这个方面在LINQ 中使用的。

于是我换了如下方法使用。

 

 //MenuType = 1 报表信息
            List<TasMenuInfo> list = bll.GetTasMenuInfo().Where("it.MenuType = 1").ToList();
            List<TasMenuInfo> TasMenuInfos = new List<TasMenuInfo>();

            //查找对象 .net 3.5 不支持list.Contains方法
            for (int i = 0; i < listtg.Count(); i++)
            {
                TasMenuInfo item = list.Find(delegate(TasMenuInfo p) { if (p.MenuID == listtg.ToList()[i].MenuID) return true; return false; });
                if (item != null)
                    TasMenuInfos.Add(item);
            };

           ddlReportName.DataSource = TasMenuInfos;
            ddlReportName.DataTextField = "MenuName";
            ddlReportName.DataValueField = "MenuID";
            ddlReportName.DataBind();

 

以上代码,在使用时其实应该使用List.FindAll()方法可能更合适 ,便是因为我没有找到相应的方法,也就作罢了,如果有人会用了告诉我哟。


 

C# System.Int32 与 int 区别

首先,两者确实有区别,其次,有区别是因为.Net Framework机制。 MSDN上对这种区别的说法是:int是是System.Int32的别名。 但这种说法太模糊了。究其根本是因为.Net Fra...
  • yueguangzhiyuan
  • yueguangzhiyuan
  • 2013年12月13日 15:41
  • 1105

Point.Offset 方法 (Int32, Int32) &&Point.Offset 方法 (Point)

1.Point.Offset 方法 (Int32, Int32) 将此 Point 平移指定的量。 命名空间:  System.Drawing 程序集:  System.Draw...
  • leiaixue
  • leiaixue
  • 2014年01月16日 19:55
  • 1584

C#中int与Int32关系揭秘

其实,关于C#中的int与Int32的关系,真的是没什么好说的。 我们都知道,int关键字是 System 命名空间中的预定义类型System.Int32的别名。 在.NET Framework中,...
  • tiana0
  • tiana0
  • 2013年09月21日 21:13
  • 4016

配置有文件流输出的程序,提示错误,请高手指点!急!急!急!

我是用VS2008写的程序!错误提示:设备未就绪。说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: Sys...
  • wanzhuan2010
  • wanzhuan2010
  • 2010年09月02日 16:54
  • 3407

EF 错误LINQ to Entities 不识别方法“Int32 ToInt32(System.String)

解决错误:LINQ to Entities 不识别方法“WinFormTools.Model.VideoInfo get_Item(Int32)”,因此该方法无法转换为存储表达式。 PS:没有错误代码...
  • luckysiesteven
  • luckysiesteven
  • 2016年03月03日 11:40
  • 3694

将DataTable转换为List<T>对象遇到问题:类型“System.Int64”的对象无法转换为类型“System.Int32”

前言:用三层开发的时候,D层经常会用到把DataTable对象转换为List对象的问题,一般情况下我们都会用到一个TableToList()方法,之前都是照着网上敲得,完了大致看一下就开始用了,也没出...
  • YYZZHC999
  • YYZZHC999
  • 2017年09月03日 15:26
  • 599

GraphicsPath.AddArc 方法 (Int32, Int32, Int32, Int32, Single, Single)

4个int分别表示矩形的左上角X,Y坐标,矩形的宽和高,C#里面画的椭圆的大小是用矩形来定义的,你定义矩形后,绘制的就是矩形的内切椭圆,后面两个为起始角度和终止角度与起始角度的夹角。 1...
  • qq_17801335
  • qq_17801335
  • 2015年01月06日 15:51
  • 979

Python中int32转int64

用pandas里的astype加上np.int64 xybasezhanbi['year'] = xybasezhanbi['year'].astype(np.int64)
  • Blackrosetian
  • Blackrosetian
  • 2017年08月24日 17:18
  • 1852

c# int Int32 Int64 的区别

c# int Int32 Int64 的区别 Int16 值类型表示值介于 -32768 到 +32767 之间的有符号整数。 Int32 值类型表示值介于 -2,147,483,648 到 ...
  • KingSea168
  • KingSea168
  • 2015年10月28日 10:00
  • 1003

C++中UINT32和INT32以及int,BOOL和bool的区别

在AndroidHAL层开发中,编写C++代码的时候,遇到了数据类型的困扰,经过查找资料,总结如下: 1.UNIT32和int以及INT32的区别: (1).int默认是signed int。...
  • u014225510
  • u014225510
  • 2015年07月26日 10:41
  • 3356
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Share Point 2010中,如何使用 in 语句?并且解决Boolean Contains[Int32](System.Collections.Generic.IEnumerable`1[System.Int32], Int32)的问题。
举报原因:
原因补充:

(最多只允许输入30个字)