2012-04-24 75 views
0

我想检索使用lambda数据,Lambda,如何使用包含?

如果写查询的,

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

从贾森数据的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()吗?

谢谢!

回答

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

+0

它的工作原理相匹配,谢谢! – 2012-04-24 17:35:52

1

它似乎是一个倒退,但你需要做的项目列表中包含你正在检查。

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

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

items.Select(x => x.weborderlnPk)应创建PK的为你做的包含列表。