我試圖用C#中的IQueryable上的LINQ查詢的結果填充listview控件。這應該是世界上最簡單的操作,但我是asp.net,c#和visual studio的新手。我所擁有的是這樣的:如何將LINQ中返回的空值更改爲IQueryable
var query = from i in _db.ItemListView
where (!string.IsNullOrEmpty(key)) ? i.Description.Contains(key) : true &&
DbGeography.FromText(i.Point).Distance(DbGeography.FromText(geog))*0.0006214 <= rng &&
(cat != null) ? i.CategoryID == cat : true &&
(sub != null) ? i.SubCategoryID == sub : true &&
(min != null) ? i.AskingPrice >= min : true &&
(max != null) ? i.AskingPrice <= max : true
orderby i.Distance ascending, i.AskingPrice ascending
select i;
return query;
這工作,但i.Distance
場返回從數據庫是由設計空。我想填充i.Distance
領域從價值觀:
DbGeography.FromText(i.Point).Distance(DbGeography.FromText(geog))
geog
是基於對郵政編碼的經度和緯度的變量。
有人請告訴我如何做到這一點?
那是你的OrderBy無法正常工作,因爲i.Distance是返回null的問題?我不確定我是否理解你的問題。 Linq大多是一個只讀範例;如果你想把數據寫入某些東西,你需要做一些不同的事情。 –
i.Distance始終爲空。我想將它的值更改爲:DbGeography.FromText(i.Point).Distance(DbGeography.FromText(geog))並按結果排序。 –
遍歷查詢對象中的記錄,並將i.Distance字段更改爲您需要的值。然後對結果運行一個新的linq查詢以獲得正確的排序。 –