在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...

QT5.1.1QbyteArray转int32

  • 2017年12月05日 10:24
  • 514B
  • 下载

MSDN:使用泛型 类型“System.Collections.Generic.IComparer <T> ”需要“1”个类型参数”。

今天在学习实现点击listview(视图为Details) 的Column时进行自动排序,查询MSDN给出了一个要自定义ICompare接口的实例;结果实例运行时是抛出错误错误 “ 使用泛型 类型“S...

C# int 类型在32/64位环境下取值范围无变化

最近在学习中突然想到,我在64位环境下,int取值范围是否有变化?为了检测这个结果,我做了以下这个测试: 1、环境:win7旗舰版64位+vs2010 sp1(版本号:10.0.40219.1S...

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

最近项目中要用到socket通讯,由于涉及到组包问题,所以需要数据类型之间的来回转换,现在分享出来 如果想要请教Socket的问题请留言,我会随时回答的 1. int类型转16进制hexstring ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Share Point 2010中,如何使用 in 语句?并且解决Boolean Contains[Int32](System.Collections.Generic.IEnumerable`1[System.Int32], Int32)的问题。
举报原因:
原因补充:

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