在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()方法可能更合适 ,便是因为我没有找到相应的方法,也就作罢了,如果有人会用了告诉我哟。


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

CS1612: 无法修改“¡°System.Collections.Generic.List.this[int]””的返回值,因为它不是变量。【C# 语言中 struct 的陷阱】

原文地址:http://www.cnblogs.com/skyivben/archive/2010/04/23/1718983.html 假设我们要为某大学写一个工资管理程序。首先是表示员工的 Em...

Bit Test int32_1_numbers

  • 2012-05-04 15:31
  • 442B
  • 下载

TensorFlow的异常Reciprocal[T=DT_INT32](Variable_1/read)

在TF里,使用32位整数来计算倒数时会抛出这个异常:Traceback (most recent call last):  File "C:\python35\lib\site-packages\te...

C#控制台基础 通过tryparse,控制台输入给Int32类型变量赋值

镇场诗:慈心积善融学习,技术誓为大家学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 ———————————————————————————————————————————————...

校园网&openwrt记(五)构造udp包,Lua的int32运算和bit运算

在计算数据包的校验和的时候,需要将校验和作为int32整形来计算,需要截断数据,但是Lua是用double来存储数值的,所以需要简单写一个workaround方法来处理;并且校验和还需要进行一些bit...

Convert.ToInt32()与int.Parse()的区别

(1)这两个方法的最大不同是它们对null值的处理方法 Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。 没搞清楚Conve...

TypeError: Expected int32, got list containing Tensors of type '_Message' instead.

在训练 tensorflow-0.11 时出现了 TypeError: Expected int32, got list containing Tensors of type '_Message' i...

Objective-C 中Socket常用转换机制(NSData,NSString,int,Uint8,Uint16,Uint32,byte[])

最近项目中要用到socket通讯,由于涉及到组包问题,所以需要数据类型之间的来回转换,现在分享出来 如果想要请教Socket的问题请留言,我会随时回答的 1. int类型转16进制hexstring ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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