LINQ获取由定界符分隔的字段值

|| 我有一种情况需要显示Items表中的ItemID和ItemName。假设ItemID为002,ItemName为Apple。我在表中还有一个名为SupplementaryItems的字段,该字段存储由|分隔的相关ItemID。 (定界符),例如003 | 004 | 005。我正在将MVC3与存储库模式一起使用,例如
var items = _dataContext.items.AsQueryable();
items = from i in items 
          where i.Item_ID.equals(itemId)
           select i;
上面带有itemId 002的查询将返回运行正常的Apple。现在,我还需要显示所有SupplementaryItems及其对应的ItemName,这意味着我需要将SupplementaryItem拆分为数组,并使用类似于SupplementaryItemArray包含ItemID的方法。但是在这种情况下,我需要对数据库进行两次单独的调用,第一个将仅返回具有itemID的项目,并将补充的ItemID存储在变量中。
 var supplementMaterialsArr = supplementMaterials.ToString().Split(\'|\');
第二个将返回所有项目,我将遍历第二个项目以从ItemID获得ItemName。仅供参考,这种方法需要从控制器进行两个单独的调用,例如
var itemInformationAll = _repository.GetAllItems();
var itemInformation = _repository.GetItemDetailInformation(id); 
我认为这不是那么有效的方法。有人对此有更好的解决方案吗?我应该使用LINQ自连接吗?但是,如果我使用自我联接,是否可以通过单个查询获取supplemetaryItem及其对应的ItemName? 任何建议将不胜感激。     
已邀请:
        这是我能想到的最好的。这将导致两个查询,但绝不会将整个表拉入内存。
var q = from item in
        (from item in TblItems
        where item.ItemID == 1
        select new
        {
            Name = item.ItemName,
            SupplementaryItems = item.SupplementaryItems.Split(\'|\')
        }).AsEnumerable()
        select new
        {
            Name = item.Name,
            SupplementaryItems = TblItems.Where (x => 
                item.SupplementaryItems.Select(y => int.Parse(y))
                .Contains(x.ItemID))
        };
但是,我建议更改数据库结构,使引用项具有单独的表。     

要回复问题请先登录注册