単語の先頭でコレクションを検索する必要があります。
Simply collection{ アイヴァン・スミス、アンソニー・クラーク、マイク・シノダ}
ユーザーが「s」を入力すると、{Ivan Smith, Mike Shinoda} を表示する必要があります
この方法は機能するはずですが、機能しません。
private void SortFriends(object sender, TextChangedEventArgs e) {
var text = (sender as WatermarkTextBox).Text;
if (text != string.Empty) {
text = text.ToLowerInvariant();
var translatedColl = FriendCollectionTranslated.Where(i => i.FirstName.StartsWith(text) || i.LastName.StartsWith(text) ||
i.FirstNameT.StartsWith(text) ||
i.LastNameT.StartsWith(text));
var newCollection = ((App)App.Current).CollectionFriends.Where(i => translatedColl.First(n => n.Uid == i.Uid) != null);
friendsBox.ItemsSource = newCollection;
}
else friendsBox.ItemsSource = ((App)App.Current).CollectionFriends;
}
public class HumanTranslated {
public string Uid { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string FirstNameT { get; set; }//Translit
public string LastNameT { get; set; }//Translit
public bool IsChecked { get; set; }
}
private void PrepareCollection()//Ретранслируем наши данные для быстрого поиска
{
foreach (var t in ((App)App.Current).CollectionFriends) {
var item = new HumanTranslated {
Uid = t.Uid,
LastNameT = ToTranslit(t.LastName.ToLowerInvariant()),
FirstNameT = ToTranslit(t.FirstName.ToLowerInvariant()),
FirstName = t.FirstName.ToLowerInvariant(),
LastName = t.LastName.ToLowerInvariant()
};
FriendCollectionTranslated.Add(item);
}
}
public class Human {
public string Uid { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsChecked { get; set; }
}