@Tarasovych

Как оптимизировать код?

Нужно передать свойства в метод, который удалит запись из БД:
string taskId = (lstTasks.SelectedItem as DataRowView)["id"].ToString();
    string taskName = (lstTasks.SelectedItem as DataRowView)["name"].ToString();
    DeleteTask(taskId, taskName);

Думаю, это плохой код.
Вот мои варианты:
1) инициализировать класс, потом в нужной функции получать его свойства
public class Task {
    public string Id {get; set;}
    public string Name {get; set;}
}

Task task = new Task {Id=(lstTasks.SelectedItem as DataRowView)["id"].ToString(), Name = (lstTasks.SelectedItem as DataRowView)["name"].ToString()}

2)
var task = (lstTasks.SelectedItem as DataRowView);
    string taskId = task["id"].ToString();
    string taskName = task["name"].ToString();

Как поступить? Рассмотрю ваши варианты. Спасибо!
  • Вопрос задан
  • 191 просмотр
Пригласить эксперта
Ответы на вопрос 2
@kttotto
пофиг на чем писать
Не стоит городить огород из ничего или иначе overhead. У Вас все нормально, только нужно учесть в паре мест возможность эксепшина. Это при приведении as может вернуть null и при чтении ключа, его может не быть.
var item = lstTasks.SelectedItem as DataRowView;
if(item == null)
    return throw new NullReferenceExeption(nameof(item));
var resultId = item.TryGetValue("id", out int id);
var resultName = item.TryGetValue("name", out string name);
if(resultId && resultName)
    DeleteTask(id.ToString(), name);
Ответ написан
lam0x86
@lam0x86
Почему бы не задать гриду коллекцию Task-ов в качестве ItemsSource?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы