Я думаю, что лучший способ это
var obj = VisualTreeHelper.GetParent((DependencyObject)Content);
База данных должна содержать значения, и вы должны выполнить соединение с другой таблицей, в которой есть эти данные.
Итак, у вас должна быть таблица со списком людей
ID Имя FavSport
1 Алекс 4
2 Gnats 2
И еще одна таблица со списком видов спорта
ID Sport
1 баскетбол
2 Футбол
3 Футбол
4 Kickball
Затем вы должны объединить эти таблицы
select people.name, sports.sport
from people, sports
where people.favsport = sports.ID
, что вернет вам
Name Sport
Алекс Кикболл
Gnat Football
Вы также можете использовать оператор case, например. просто используя приведенную выше таблицу людей, вы можете написать что-то вроде
select name,
case
when favsport = 1 then 'Basketball'
when favsport = 2 then 'Football'
when favsport = 3 then 'Soccer'
else 'Kickball'
end as "Sport"
from people
Но это, конечно, не лучшая практика.
MySQL имеет оператор CASE
. В SQL Server работает следующее:
SELECT
CASE MyColumnName
WHEN 1 THEN 'First'
WHEN 2 THEN 'Second'
WHEN 3 THEN 'Third'
ELSE 'Other'
END
Как вы думаете, было бы полезно хранить эти отношения между целыми числами и строками в самой базе данных? Пока вам нужно хранить эти отношения, имеет смысл хранить их рядом с вашими данными (в базе данных), а не в вашем коде, где они могут потеряться. Если вы используете это решение, это сделает целое число внешним ключом для значений в другой таблице. Вы сохраняете целые числа в другой таблице, например sports
, с sport_id
и sport
, и присоединяете их как часть вашего запроса.
Вместо SELECT * FROM my_table
вы должны SELECT * from my_table
и использовать соответствующее соединение . Если не каждая строка в вашем основном столбце имеет соответствующий вид спорта, вы можете использовать левое соединение,
определенно должен содержать в БД строковые значения. Я ни в коем случае не эксперт по БД, но я бы порекомендовал вам создать таблицу, в которой хранятся строки и соответствующие им целочисленные значения. Оттуда вы можете определить связь между двумя таблицами, а затем выполнить JOIN в select, чтобы получить строковую версию целого числа.
tblSport Columns
------------
SportID int (PK, eg. 12)
SportName varchar (eg. "Tennis")
tblFriend Columns
------------
FriendID int (PK)
FriendName (eg. "Joe")
LikesSportID (eg. 12)
In this example, you can get the following result from the query below:
SELECT FriendName, SportName
FROM tblFriend
INNER JOIN tblSport
ON tblFriend.LikesSportID = tblSport.SportID
Чувак, уже поздно - надеюсь, я понял. кстати, вы должны прочитать о различных типах объединений - это самый простой пример одного из них.
Выражение CASE
может помочь. Однако может быть даже быстрее иметь небольшую таблицу с первичным ключом int и строкой name
, такой как
1 baseball
2 football
и т. Д., И JOIN
соответствующим образом в запросе.