I use this method to extract table name and field name from formula.public List<string> ExtractFieldsFromFormula(string formula){    List<string> formulas = new List<string>();    formulas.AddRange(formula.Split(new char[] {'{', '}'}).Where(f=>!f.Contains(+) && !f.Contains(-)&&!f.Contains(/)&&!f.Contains(*)&& !f.Contains(()&& !f.Contains()) && f.Trim()!=String.Empty));    return formulas;}my formula is like this:{City.a}+5*(2/{City.b})and result of method is a list :City.aCity.bhow can i write this code better than this?!!
Contains method in lambda expression
c#;linq
And there's always a place for a regular expression (especially when searching for a pattern in a string of characters ;-)).using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;namespace ConsoleApplication9{    class Program    {        static void Main(string[] args)        {            string pattern = @\{(?<expr>[a-zA-Z0-9.]+?)\};            string formula = @{City.a}+5*(2/{City.b});            var matches = Regex.Matches(formula, pattern).OfType<Match>();            foreach (var match in matches)            {                Console.WriteLine(match.Groups[expr]);            }            // prints            // City.a            // City.b            string splitPattern = @\{(?<object>[a-zA-Z0-9]+?)\.(?<field>[a-zA-Z0-9]+?)\};            matches = Regex.Matches(formula, splitPattern).OfType<Match>();            foreach (var match in matches)            {                Console.WriteLine(Object: {0}   Field: {1}, match.Groups[object], match.Groups[field]);            }            // prints            // Object: City   Field: a            // Object: City   Field: b        }    }}