Lambda,如何使用包含?

时间:2012-04-24 15:25:49

标签: asp.net json lambda

我想使用Lambda检索数据,

如果编写查询,

SELECT * FROM weborderln WHERE PK in ('60fa6105-42c9-aa4b-82a2-1d84f803a540','adsfasfwer-we123-1231b-82a2-12312312sd5125');

来自Jason Data的PK值。

string itemsInfo = "[{\"itemNo\":\"SKR315FLWW\",\"qty\":1,\"weborderlnPk\":\"60fa6105-42c9-aa4b-82a2-1d84f803a540\"},{\"itemNo\":\"OKHIY211\",\"qty\":1,\"weborderlnPk\":\"adsfasfwer-we123-1231b-82a2-12312312sd5125\"}]"; 

JavaScriptSerializer js = new JavaScriptSerializer();
IList<PartialInvoiceParamsModel> items = js.Deserialize<IList<PartialInvoiceParamsModel>>(itemsInfo);

//Response.Write(items[0].itemNo); // SKR315FLWW

EFWebOrderLnRepository webOrderLnRepository = new EFWebOrderLnRepository();
var webOrderLns = webOrderLnRepository.WebOrderLns.Where(e => e.PK.Contains(?????)).ToList(); //// 

有人知道我需要把什么放入Contains()?

谢谢!

2 个答案:

答案 0 :(得分:1)

一开始似乎是落后的,但你需要在你正在检查的项目列表上做包含。

所以你需要创建一个PK列表来进行包含。
例如:

var webOrderLns = webOrderLnRepository.WebOrderLns.Where(e => items.Select(x => x.weborderlnPk).Contains(e.PK)).ToList();

items.Select(x => x.weborderlnPk)应该创建PK的列表,以便您使用。

进行包含

答案 1 :(得分:1)

假设您有ID列表:

List<string> listIDs = new List<string> { "60fa6105-42c9-aa4b-82a2-1d84f803a540", 
                                          "60fa6105-42c9-aa4b-82a2-1d84f803a541", 
                                          "60fa6105-42c9-aa4b-82a2-1d84f803a542" 
                                         };
var webOrderLns = from foo in webOrderLnRepository.WebOrderLns 
                  where listIDs.Contains(foo.PK) 
                  select foo;

这将为您提供ID与列表ID匹配的记录