Поскольку вы хотите сравнить каждое string_a
с любым string_b
, вы должны использовать самосоединение:
with dataset(string_a_id, string_a, string_b_id, string_b) as (
values
(1, 'hello world', 11, null),
(2, 'hello world', 13, null),
(3, 'ipsum lorem', 21, 'hello world')
)
select q1.string_a_id, q1.string_a, q2.string_b_id, q2.string_b
from dataset q1
join dataset q2 on trim(q1.string_a) ilike trim(q2.string_b)
string_a_id | string_a | string_b_id | string_b
-------------+-------------+-------------+-------------
1 | hello world | 21 | hello world
2 | hello world | 21 | hello world
(2 rows)
Замените values
в исходном запросе вашим фактическим запросом.
Добавьте другое свойство к классу MyObject и свяжите с тем свойством:
public string DisplayValue
{
get { return string.Format("{0} ({1})", Name, Zip); }
}
Или если Вы не можете изменить MyObject, создайте интерфейсный объект на уровне представления (только для отображения). Это может также быть сделано с помощью некоторого LINQ:
List<MyObject> myList = getObjects();
ddList.DataSource = (from obj in myList
select new
{
Id = obj.Id,
Name = string.Format("{0} ({1})", obj.Name, obj.Zip)
}).ToList();
ddList.DataValueField = "Id";
ddList.DataTextField = "Name";
ddList.DataBind();
(извините я не имею Visual Studio в наличии, таким образом, могли бы быть ошибки в коде),
Я рекомендовал бы читать это: http://martinfowler.com/eaaDev/PresentationModel.html
По существу Вы хотите создать класс, который представляет привязку к конкретному UI. Таким образом, Вы отобразили бы свою Модель (Мой Объект в Вашем примере) к объекту ViewModel и затем связали бы выпадающий список тот путь. Это - прохладный способ думать о разделении проблем.
Править: Вот другой ряд блога на ViewModel: http://blogs.msdn.com/dancre/archive/2006/10/11/datamodel-view-viewmodel-pattern-series.aspx
BTW, Try assigning the "DataTextField" and "DataValueField" before you assign the DataSource. Doing so will prevent firing the "SelectedIndexChanged" event while databinding...