Тема: SpellWork C#
Показать сообщение отдельно
Старый 28.04.2010, 09:18   #33
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Помогите с задачей, для реализации расширенного фильтра в 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]
Много гуглил но так и не нашел способа реализации данной задачи, возможно ответ очевиден, но ...
__________________
Konctantin вне форума   Ответить с цитированием