У меня есть клиент, который отправляет эти данные:
{"answers":[
{"response":true},
{"response":true},
{"response":true},
{"response":false},
{"response":false}]}
У меня есть такие классы:
public class AnswerRow
{
public bool? Correct { get; set; }
public bool Response { get; set; }
}
public class AnswerRowList
{
public IList<AnswerRow> Answers { get; set; }
}
В моем WebAPI я получаю следующие данные:
[HttpPut]
[Route("MarkQuestion/{testQuestionId}/{questionUId:Guid}")]
[ValidateModel]
public async Task<IHttpActionResult> MarkQuestion(string testQuestionId, Guid questionUId, [FromBody]AnswerRowList answer)
{
var createdBy = User.Identity.GetUserId();
DataTable answers = new DataTable();
answers.Columns.Add("Response", typeof(????));
foreach (AnswerRow a in answer.Answers)
{
answers.Rows.Add(a.Response);
}
Я думаю, что весь мой код в порядке, но я не знаю, как добавить столбец в DataTable, который примет логическое значение. Я попробовал BIT и бит и бит, но он показывает синтаксическую ошибку в VS2013 для этих типов.
Я бы попытался использовать переменную TinyInt вместо логического. Это один байтовый тип данных, который вы можете использовать для ввода значений 1 или 0, если хотите, для представления true и false соответственно. Могут быть и другие способы, но это то, что я использовал в своих таблицах.
Вот статья MSDN, в которой объясняются некоторые типы данных.
EDIT Извините, но я не могу понять, как я использовал TinyInt в прошлый раз. Я бы рекомендовал изменить ваш тип на INT, а по соглашению использовать только значения 1 или 0. Таким образом, вы можете взять свой код здесь:
answers.Columns.Add("Response", typeof(????));
foreach (AnswerRow a in answer.Answers)
{
answers.Rows.Add(a.Response);
}
И сделайте это:
answers.Columns.Add("Response", typeof(int));
foreach(AnswerRow a in answer.Answers)
{
if(a.Response) // Here I'm trying to check if a.Response is true
answers.Rows.Add(1);
else
answers.Rows.Add(0);
}
У меня нет возможности проверить это на данный момент, поэтому дайте мне знать, если это по крайней мере указывает вам в правильном направлении.