示例#1
0
 public CardDataStore.CardsQuery CreateQuery(IEnumerable <Card> domain = null)
 {
     CardDataStore.CardsQuery query = new CardDataStore.CardsQuery(Connector, domain);
     foreach (object item in Items)
     {
         if (item is SearchCriteria criteria)
         {
             string       field    = criteria.Field.Replace(" ", "");
             PropertyInfo property = typeof(Card).GetProperty(field);
             if (property.PropertyType == typeof(bool))
             {
                 query.Where(criteria.Field, criteria.Set);
             }
             else if (criteria.Operation == "Exists")
             {
                 query.Where(criteria.Field, criteria.Operation, criteria.Set.ToString());
             }
             else if (criteria.Operation == "Contains" && property.PropertyType == typeof(string) && field.Contains("Color"))
             {
                 query.Where(criteria.Field, criteria.Operation, criteria.Color);
             }
             else
             {
                 query.Where(criteria.Field, criteria.Operation, criteria.Value);
             }
         }
         if (item is SearchViewModel model)
         {
             CardDataStore.CardsQuery query2 = model.CreateQuery(domain);
             query.Where(query2);
         }
     }
     if (Negated)
     {
         query.Negate();
     }
     return(query);
 }
示例#2
0
 async void Search(object sender, EventArgs e)
 {
     CardDataStore.CardsQuery query = RootGroup.GetQuery();
     await Navigation.PushAsync(new CardsListPage(query.ToDataStore()));
 }