我需要在產品表上進行選擇。 該產品有一個名爲郵編 我需要得到全部產品從特定郵政編碼列,比選擇郵編Linq,選擇值+ - 一個值
所以,如果我有郵政編碼較高和較低的5郵編51235 我所需要的產品從5更高的郵政編碼和更低的郵政編碼,這可能與linq?
希望有人能幫助
我需要在產品表上進行選擇。 該產品有一個名爲郵編 我需要得到全部產品從特定郵政編碼列,比選擇郵編Linq,選擇值+ - 一個值
所以,如果我有郵政編碼較高和較低的5郵編51235 我所需要的產品從5更高的郵政編碼和更低的郵政編碼,這可能與linq?
希望有人能幫助
要獲得郵政編碼-5和郵政編碼+ 5
container.Products.Where(w => (w.ZipCode > zipCode - 5) && (w.ZipCode < zipCode + 5));
之間的產品才能獲得產品都有各自郵編正好等於郵政編碼+/- 5和電流郵編。
container.Products.Where(w => (w.ZipCode == zipCode - 5) || (w.ZipCode == zipCode + 5) || (w.ZipCode == zipCode + 5));
也許是這樣的:
var zip = 51235;
context.Products.Where(p => p.ZipCode >= zip - 5 && p.ZipCode <= zip +5);
或者這樣:
var zip = 51235;
var products = from p in context.Products
where p.ZipCode >= zip -5 && p.ZipCode <= zip + 5
select p;
UPDATE:
如果你想要做的這一切,你可以做這樣一個說法這個:
var products = Products.Where(p1 =>
Products.Select(p2 => p2.ZipCode)
.Distinct()
.Where(p3 => p3 >= zipCode)
.Take(4)
.Union(
Products.Select(p4 => p4.ZipCode)
.Distinct()
.Where(p5 => p5 < zipCode)
.Take(3)
).Contains(p1.ZipCode)
);
但是,將它拆分爲不同的語句可能會更容易,以使其更易讀。
對不起,我不明確,郵編可能是51235,下一個不是nesesarey 51235,它可能是51602例如..所以扣除5不會工作 –
也許我可以對列表進行降序排序,然後選擇不同的郵政編碼,然後獲取傳入數組和數組[1] 2 3 4 5和-1 -2 -3 -4 -5,聽起來真的很醜陋哈哈 –
可以使用,
var collectionEqualToZipCode = SourceCollection.Where(source=> source.Zip == SelectedZip);
int lessZipCodesTaken = 0;
int greaterZipCodesCountTaken = 0;
var collectionlessthanOrGreaterthanZipCode = SourceCollection.TakeWhile(source =>
(source.Zip < SelectedZip && lessZipCodesTaken++ < 5) ||
(source.Zip > SelectedZip && greaterZipCodesCountTaken ++ < 5));
FinalCOllection.AddRange(collectionEqualToZipCode);
FinalCOllection.AddRange(collectionlessthanOrGreaterthanZipCode);
LINQ是什麼?實體? SQL?對象? –
如果您的郵政編碼已經是數字類型 – 2012-05-04 10:24:32
「5個更高的郵編和更低的郵編」產品,這將有很大幫助「這是什麼意思? –