我在一個web服務中使用LINQ,在文本框上創建一個自動完成功能。我有它的工作,但不幸的是,結果沒有按照我預期的順序填充,例如,如果我搜索以「carl」開頭的飲料,我期望先「carling」,然後再「carlsberg」,但是這個情況並非如此。自動完成擴展器不按字母順序排序
正在使用的Web服務是:
public string[] GetProdDesSearch(string prefixText, int count)
{
try
{
ReportingService.ProductsDataContext dbac = new ReportingService.FinalProductsDataContext();
return dbac.FINALPRODUCTSNEWDEMOs
.Where(r => r.MemberId == HttpContext.Current.Session["MemberKey"].ToString() && r.IDDesc.Contains(prefixText))
.OrderBy(r => r.UnitDescription)
.Select(r => r.IDDesc)
.Distinct()
.Take(count)
.ToArray();
}
catch (Exception)
{
return null;
}
}
}
在.NET細節如下:
<asp:TextBox ID="tbxProdAC" runat="server"
style="z-index: 1; left: 200px; top: 460px; position: absolute; height: 20px; width: 345px;"
CssClass="completionList2" AutoPostBack="True"
ontextchanged="tbxProdAC_TextChanged"></asp:TextBox>
<cc1:AutoCompleteExtender ID="tbxProdAC_AutoCompleteExtender" runat="server"
DelimiterCharacters="" Enabled="True"
ServicePath="~/Reporting/GetProd.asmx"
ServiceMethod="GetProdDesSearch"
TargetControlID="tbxProdAC"
CompletionInterval="50" CompletionSetCount="50"
MinimumPrefixLength="3"
onclientpopulating="ShowImage"
onclientpopulated="HideImage"
CompletionListCssClass="completionList2">
</cc1:AutoCompleteExtender>
.completionList2 {font-family: Trebuchet MS;font-size:11px; border:solid 1px #444444;margin:0px;padding:2px;height: 395px;
overflow:auto; background-color:White;
z-index: 1;
left: 200px;
top: 310px;
position: absolute;
width: 1496px;
}
如果有人能指出我的方式錯誤,我將非常感謝。
很多道歉喬恩,那就是我「打」,看看是否使用unitdescription作出任何區別。 當我通過IDDesc進行訂購時,也會發生同樣的情況,即產品的排序錯誤 – 2010-02-09 10:28:07
看起來實際上沒有進行排序 - 從查看幾行結果看來,它看起來像是在沒有排序的情況下單獨提取數據。 – 2010-02-09 10:31:23