Помогите с задачей, для реализации расширенного фильтра в
SpellWork
Есть структура:
Код:
public struct SpellEntry
{
public uint ID;
....
};
как мне представить структуру как массив полей (для того чтобы вывести в комбобокс и пользователь мог сам выбирать поле структуры и присваивать ей значение)
Я частично решил проблему, чтобы заполнить
ComboBox нужными данными из структуры сделал такой метод расширения:
Код:
public static void SetStructFields<T>(this ComboBox cb) where T : struct
{
cb.Items.Clear();
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("NAME");
var type = typeof(T).GetMembers();
int i = 0;
foreach (var str in type)
{
dt.Rows.Add(new object[]
{
str,
String.Format("({0:000}) {1}", i, str.Name)
});
i++;
}
cb.DataSource = dt;
cb.DisplayMember = "NAME";
cb.ValueMember = "ID";
}
Но появился второй вопрос, как можно теперь применить это в запросе
LINQ?
все данные у меня хранятся в
Dictionary<uint, SpellEntry> Spell;
Что я имею ввиду: скажем есть такой простенький запрос:
Код:
var query = from s in DBC.Spell.Value where s.SpellName == val select s;
как сделать чтобы в запрос вставить переменную из
ComboBox
чтобы было что-то на подобии:
Код:
var field = ((ComboBox)sender).SelectedValue;
var query = from s in DBC.Spell.Value where s[field] == val select s;
Естественно так как я написал - не работает, по сему и прошу помощи.
И возможно ли вообще присвоение переменной в єтом участке кода:
Код:
DBC.Spell.Value where s[field]
Много гуглил но так и не нашел способа реализации данной задачи, возможно ответ очевиден, но ...