Если целью вашего очень большого CQL-файла является простое получение данных, то выполнение его исключительно в Cypher будет очень медленным (и может даже вызвать ошибку нехватки памяти).
Если вы входите в новую базу данных neo4j, вам следует рассмотреть возможность рефакторинга данных из нее и использовать команду импорта инструмента neo4j-admin для эффективного приема данных.
Если вы входите в существующую БД, вы должны рассмотреть возможность рефакторинга данных и логики из файла CQL и использования LOAD CSV .
Расчетное решение для колонки, вероятно, является лучшим. Но если вы не можете изменить схему таблицы данных, чтобы добавить это, вы можете перебрать таблицу и заполнить новую коллекцию, которая будет служить источником данных.
var dict = new Dictionary<Guid, string>();
foreach (DataRow row in dt.Rows)
{
dict.Add(row["GUID"], row["Name"] + " " + row["Surname"]);
}
cbo.DataSource = dict;
cbo.DataTextField = "Value";
cbo.DataValueField = "Key";
cbo.DataBind();
Очевидно, это не так эффективно, как привязка непосредственно к DataTable. но я бы не стал беспокоиться об этом, если в таблице нет тысяч строк.
Самый простой способ - создать новый вычисляемый столбец в DataTable, используя свойство Expression:
tbldata.Columns.Add("FullName", typeof(string), "Name + ' ' + Surname");
...
cbo.DataTextField = "FullName";
Или реализовать событие «Формат» следующим образом:
DataRow r = ((DataRowView)e.ListItem).Row;
e.Value = r[ "FirstName" ] + " - " + r[ "LastName" ];
Посмотрите на вычисляемые столбцы, используя свойство Expression объекта DataColumn.
Я бы создал свойство для вашего объекта данных, а затем сопоставил бы его с DataTextField
Объект данных
public string FullName
{
get { return Name + " " + Surname; }
}
Код программной части
cbo.DataSource = tbldata;
cbo.DataTextField = "FullName";
cbo.DataValueField = "GUID";
cbo.DataBind();
Имейте свойство в вашем классе, которое является объединением имени и фамилии. И привяжите DataTextField к этому свойству.
Если вы привязываете его к DataTable, вы можете добавить новый столбец в DataTable, значения которого совпадают с Name и Surname, и привязать его к комбо.
Вы можете зарегистрировать событие привязки комбо и перебирать элементы, устанавливая текст каждого элемента в нужные поля, используя элемент данных элемента combobox.