У меня есть список объектов, для которых нужно показать отдельные свойства, и список приведен ниже:
public class Questions
{
public Nullable<int> QuestionId { get; set; }
public string QuestionName { get; set; }
public string Options { get; set; }
}
public List<Questions> GetLst()
{
List<Questions> aLst = new List<Questions>()
{
new Questions() { QuestionId = 1, QuestionName = "What is the capital of England?", Options = "London" },
new Questions() { QuestionId = 1, QuestionName = "What is the capital of Engand?", Options = "Jakarta" },
new Questions() { QuestionId = 2, QuestionName = "Who invented computer?", Options = "Thomas Edison" },
new Questions() { QuestionId = 2, QuestionName = "Who invented computer?", Options = "Charles Babbage" },
};
return aLst;
}
Итак, как видно, в списке повторяются значения свойств, например ИД вопроса и Имя вопроса . Итак, во внешнем интерфейсе я использую Razor
, чтобы показать список, и просто l oop повторяется как номер данного объекта.
@foreach (var item in Model.Distinct())
{
<div class="heading">
<div class="h2Val">
@item.QuestionId
</div>
<div>@item.QuestionName</div>
@foreach (var item2 in Model.Where(c => c.QuestionId == item.QuestionId))
{
<div class="heading2">
<div>
<input type="checkbox" class="cbCheck" value="@item2.Options" />@item2.Options
</div>
</div>
}
<div>
<input type="button" class="btn" value="Get Value" />
</div>
</div>
}
Итак, мой ожидаемый результат выглядит следующим образом:
1
What's the capital of England?
Option 1: London
Option 2: Jakarta
Что я сейчас получаю:
1
What's the capital of England?
Option 1: London
1
What's the capital of England?
Option 2: Jakarta
Я пробовал что-то вроде этого, чтобы различать значения свойств следующим образом, но это совсем не помогло: (Любая идея получше разрешите его, используя Razor
или Linq
)
aLst = db.Questions.DistinctBy(p => new { p.QuestionId, p.QuestionName, p.Options }).ToList();