我创建了一个Web服务,它从数据库中读取数据并将其显示给用户。基本上用户将输入邮政编码,输出将是该邮政编码附近的5家餐馆。但是,我想根据最接近最远的邮政编码对结果进行排序。我应该使用哪些C#代码来实现这一目标? 注意:我使用此代码计算用户邮政编码与给定餐馆之间的距离。
<% foreach (var item in Model) { %> <tr> <td>
<% Restaurant.GoogleWebService objservice = new Restaurant.GoogleWebService();%>
<% string Postcode2 = (item.PostCode.ToString()); %>
<% string Postcode1 =(String)(Session["Data"]); %>
<% string d = (objservice.GetDrivingDistanceInMiles(Postcode1, Postcode2).ToString()); %>
<%: d %> <%: "Miles" %>
<%: Html.DisplayFor(modelItem => item.Location) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.PostCode) %>
</td>
答案 0 :(得分:1)
您应该将您的逻辑与演示文稿分开。
将此部分放入控制器操作中:
var objservice = new Restaurant.GoogleWebService();
var originPostCode = (String)Session["Data"];
var results = Model.Select(item =>
new RestaurantResult {
Location = item.Location,
PostCode = item.PostCode,
Distance = objservice.GetDrivingDistanceInMiles(originPostCode,
item.Postcode.ToString()).ToString()
}).OrderBy(item => item.Distance);
//Pass results to the View here.
替换&#34;型号&#34;这里有任何对象包含您先前作为视图模型传递给视图的结果集合。
确保在视图中更改模型类型以匹配结果类型,或者使用动态。您还必须创建一个新类(RestaurantResult
)来保存结果视图模型。
这在视图中:
<% foreach (var item in Model) { %>
<tr>
<td>
<%: item.Distance %>Miles
<%: Html.DisplayFor(modelItem => item.Location) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.PostCode) %>
</td>
</tr>
<% } %>