2012-04-24 69 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的爲你做的包含列表。