Хорошо, я пытаюсь создать частичное представление и контроллер, задачей которого является выбор и отображение списка аксессуаров для любого продукта, который в данный момент просматривается в родительском представлении.
База данных, с которой я снова работаю, хранит эту информацию в поле, отформатированном в виде списка через запятую, например:
productnr,productnr2,productnr3,productnr4
Поэтому я использую следующий код для извлечения этого списка ииспользуйте его для запуска эквивалента оператора SQL WHERE IN:
[ChildActionOnly]
public ActionResult _ListAccessories(string Artnr)
{
var List = (
from ArtTbl in db.ArtTbl
where ArtTbl.ArticleNr == Artnr
select ArtTbl.AccessoryList)
.SingleOrDefault();
var AccList = customFunctions.Accessories(text);
var AccQuery =
from Art in db.ArtTbl
where AccList.Contains(ArtTbl.ArticleNr)
select new AccessoryList
{
Artnr = ArtTbl.ArticleNr,
Name = ArtTbl.Namefield_1,
};
return PartialView(AccQuery);
}
Функция в переменной AccList преобразует первую строку в приведенный ниже результат.Я сделал это, потому что во всех примерах, которые я видел, использовался такой синтаксис, функция, кажется, работает правильно, как я уже тестировал, отправив ее в виде viewBag в представление, просто чтобы убедиться, что он выглядит правильно:
"productnr", "productnr2", "productnr3", "productnr4"
Вот так выглядит модель AccessoryList, просто очень простая модель:
public class AccessoryList
{
public string Artnr { get; set; }
public string Name { get; set; }
public AccessoryList()
{
}
}
Теперь этот код работает, но проблема в том, что он слишком велик, если у меня есть номер продукта всписок с надписью «AP500W», затем он также вернет «AP500» или просто «500».Это проблема, поскольку она должна возвращать только точное совпадение.