Если я что-то упустил, почему бы вам просто не сделать select q.QuestionID
вместо создания новой обертки анонимного типа?
var matchedques = from q in dc.GetTable<Question>()
where q.QuestionText.Contains(quesText)
select q.QuestionID;
foreach (var element in matchedques)
{
MessageBox.Show(element.ToString());
}
В качестве альтернативы присвойте полю имя ("theID
" ниже) и получите к нему прямой доступ:
var matchedques = from q in dc.GetTable<Question>()
where q.QuestionText.Contains(quesText)
select new{
theID = q.QuestionID
};
foreach (var element in matchedques)
{
MessageBox.Show(element.theID.ToString());
}
Видимо, в этом вопросе было больше, чем я думал. В ответ на комментарий, имейте в виду, что вы возвращаете перечисление результатов в matchedques (отсюда и foreach выше, верно?). Поэтому следующая строка также содержит ошибку:
string qidGuidString = matchedques.ToString();
Вы либо хотите
string qidGuidString = matchedques.Single().ToString();
если совпадения должны содержать один результат, или цикл foreach, если совпадения должны содержать несколько результатов.
Обратите внимание, что нет смысла преобразовывать GUID в строку и обратно, и вы также можете использовать запрос для возврата чего-то более полезного (а именно, нового DateLastUsed
объекта):
var matchedques = from q in dc.GetTable<Question>()
where q.QuestionText.Contains(quesText)
select new DateLastUsed() {
DLUID = Guid.NewGuid(),
QuestionID = q.QuestionID,
DateLastUsed1 = DateTime.Now
};
Table<DateLastUsed> dlused = Repository.GetDateLastUsedTable();
foreach(var dlu in matchedques)
{
dlused.InsertOnSubmit(dlu);
dlused.Context.SubmitChanges();
}