#c# #asp.net #asp.net-mvc
#c# #asp.net #asp.net-mvc
Вопрос:
Я хотел перечислить даты в выпадающем списке, но у меня возникла проблема с преобразованием в команде GenreLst.AddRange (GenreQry.Distinct ()); кто-нибудь может помочь? спасибо, я попробовал использовать Convert.ToDateTime(), но не работает.
public ActionResult Index(string startData)
{
var GenreLst = new List<string>();
var GenreQry = from d in db.Programa
orderby d.Data_Registo
select d.Data_Registo;
GenreLst.AddRange(GenreQry.Distinct()); //Error string
ViewBag.startData = new SelectList(GenreLst);
var datas = from m in db.Programa
select m;
if (string.IsNullOrEmpty(startData))
return View(datas);
else
{
DateTime start = Convert.ToDateTime(startData);
return View(datas.Where(x => x.Data_Registo == start));
}
}
CS1503:Argument 1: cannot convert from 'System.Linq.lQueryable<DateTime?> to System.Collections.Generic.lEnumerable<string>'
Комментарии:
1. Для начала не храните даты в виде строк. Все базы данных имеют типы, связанные с датой, такие как
datetime
илиdate
2. Обычно вместе с волнистой красной линией появляется сообщение об ошибке. Это значительно увеличило бы ваши шансы на получение полезного ответа, если бы вы включили это сообщение об ошибке в виде текста в свой вопрос.
3. Что касается ошибки — вы ее не опубликовали. Просто картинка с закорючками. Изображения не могут быть скопированы, скомпилированы и протестированы. Какую фактическую ошибку вы получаете? Возможно, запрос возвращает правильное
DateTime
? Почему бы не сохранить его в aList<DateTime>
?4. Если вы сохраняете
Data_Registo
как DateTime в базе данных, то вам нужно будет преобразовать эти значения в строку, чтобы иметь возможность добавлять их в свой список строк.GenreLst.AddRange(GenreQry.Distinct().Select(b => b.ToString("yy-MM-dd")));
5. мои данные (Data_Registo) имеют DateTime, но я хочу загрузить их в виде строки
Ответ №1:
Похоже, вы пытаетесь добавить список типов DateTime?
к списку типов string
, что вызывает ошибку, которую вы видите здесь.
Чтобы решить эту проблему, вы могли бы объявить GenreLst
тип List<DateTime?>
, такой как:
var GenreLst = new List<DateTime?>();
Что затем позволит вам добавлять GenreQry
.
В качестве альтернативы можно было бы объявить GenreLst
в качестве результата из GenreQry.Distinct()
:
var GenreLst = GenreQry.Distinct();
Комментарии:
1. Да, это работает. иногда кажется, что я просто усложняю простое 🙂 спасибо
Ответ №2:
public static DateTime? ToNullableDateTime(object dateTime)
{
if (dateTime == null)
{
return null;
}
DateTime tvParsedDate;
if (DateTime.TryParse(dateTime.ToString(), out tvParsedDate))
{
return tvParsedDate;
}
return null;
}
Комментарии:
1. Похоже, это не имеет никакого отношения к заданному вопросу (хотя, поскольку вы не удосужились добавить какое-либо объяснение своего кода, мы понятия не имеем, какую логику вы применяете в своем ответе). Вы случайно разместили это в неправильном месте?