C# 不同项的列表,其计数基于另一个迭代字符而不是值的查询?

C# 不同项的列表,其计数基于另一个迭代字符而不是值的查询?,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个详细信息页面,从几个表中引入数据。我希望它返回一个表的完整列表,然后根据视图不同部分中的类别分割出列表。我没有问题带回完整的清单: var query = string.Format("Select C.* from Cards C Left Join CardDecks CD ON CD.CardID = C.CardID Where DeckID = {0}", id); var cardlist = db.Cards.SqlQuery(query).ToLi

我有一个详细信息页面,从几个表中引入数据。我希望它返回一个表的完整列表,然后根据视图不同部分中的类别分割出列表。我没有问题带回完整的清单:

var query = string.Format("Select C.* from Cards C Left Join CardDecks CD ON CD.CardID = C.CardID Where DeckID = {0}", id);
            var cardlist = db.Cards.SqlQuery(query).ToList();
它带来了苹果,苹果,苹果,苹果,橘子,橘子,酸橙。当我试着把它分割出来时,我想要的是:

  • 4个苹果
  • 2个橙子
  • 石灰等

            var creaturelist = " ";
            var list = creatures.Select(t => t.Title).ToList();
            var section = list.GroupBy(c => c, (a, b) => new { Title = a, Count = b.Count() });
    
            foreach (var item in section)
            {
                creaturelist = string.Format("{0}x {1}", item.Count, item.Title);
            }
        var vm = new ViewDeck();
        vm.Deck = deck;
        vm.CardList = cardlist;
        vm.Creatures = creaturelist;
        return View(vm);
    
我的视图模型:

public class ViewDeck
    {
        public Deck Deck { get; set; }
        public Card Cards { get; set; }
        public CardDeck CardDecks { get; set; }
        public IList<Card> CardList { get; set; }
        public dynamic Creatures { get; set; }
    }
公共类ViewDeck
{
公共甲板{get;set;}
公共卡{get;set;}
公共卡片组卡片组{get;set;}
公共IList卡片列表{get;set;}
公共动态对象{get;set;}
}
有问题的观点部分:

CREATURES<br />
         @foreach (var item in Model.Creatures)
         {
            @Model.Creatures<br />
         }
生物
@foreach(Model.biotes中的变量项) { @模型生物
}

我得到的结果是重复上一次计数加上标题,就像在标题中重复1个字符一样。我不明白为什么它要遍历标题的每个字符,而不是仅仅获取标题的整个值。

您必须在模型中将
生物定义为列表而不是
字符串,然后通过在循环中添加项目生成列表:

var creaturelist = new List<string>();
var list = creatures.Select(t => t.Title).ToList();
var section = list.GroupBy(c => c, (a, b) => new { Title = a, Count = b.Count() });

foreach (var item in section)
{
    creaturelist.Add(string.Format("{0}x {1}", item.Count, item.Title));
}
var vm = new ViewDeck();
vm.Deck = deck;
vm.CardList = cardlist;
vm.Creatures = creaturelist;
return View(vm);

必须在模型中将
生物
定义为列表而不是
字符串
,然后通过在循环中添加项目生成列表:

var creaturelist = new List<string>();
var list = creatures.Select(t => t.Title).ToList();
var section = list.GroupBy(c => c, (a, b) => new { Title = a, Count = b.Count() });

foreach (var item in section)
{
    creaturelist.Add(string.Format("{0}x {1}", item.Count, item.Title));
}
var vm = new ViewDeck();
vm.Deck = deck;
vm.CardList = cardlist;
vm.Creatures = creaturelist;
return View(vm);

必须在模型中将
生物
定义为列表而不是
字符串
,然后通过在循环中添加项目生成列表:

var creaturelist = new List<string>();
var list = creatures.Select(t => t.Title).ToList();
var section = list.GroupBy(c => c, (a, b) => new { Title = a, Count = b.Count() });

foreach (var item in section)
{
    creaturelist.Add(string.Format("{0}x {1}", item.Count, item.Title));
}
var vm = new ViewDeck();
vm.Deck = deck;
vm.CardList = cardlist;
vm.Creatures = creaturelist;
return View(vm);

必须在模型中将
生物
定义为列表而不是
字符串
,然后通过在循环中添加项目生成列表:

var creaturelist = new List<string>();
var list = creatures.Select(t => t.Title).ToList();
var section = list.GroupBy(c => c, (a, b) => new { Title = a, Count = b.Count() });

foreach (var item in section)
{
    creaturelist.Add(string.Format("{0}x {1}", item.Count, item.Title));
}
var vm = new ViewDeck();
vm.Deck = deck;
vm.CardList = cardlist;
vm.Creatures = creaturelist;
return View(vm);

关于sql注入的强制性警告。您应该使用参数,而不是格式化查询字符串。如果正在访问的表不包含用户输入值,SQL注入是否会造成问题?很抱歉,我一直在努力阅读有关安全性的文章,有很多东西需要学习。对于您的查询,由于id是一个数值,所以可能性很低。但使用参数只是一个好习惯。参数还负责容易弄乱的格式。sql注入的强制性警告。您应该使用参数,而不是格式化查询字符串。如果正在访问的表不包含用户输入值,SQL注入是否会造成问题?很抱歉,我一直在努力阅读有关安全性的文章,有很多东西需要学习。对于您的查询,由于id是一个数值,所以可能性很低。但使用参数只是一个好习惯。参数还负责容易弄乱的格式。sql注入的强制性警告。您应该使用参数,而不是格式化查询字符串。如果正在访问的表不包含用户输入值,SQL注入是否会造成问题?很抱歉,我一直在努力阅读有关安全性的文章,有很多东西需要学习。对于您的查询,由于id是一个数值,所以可能性很低。但使用参数只是一个好习惯。参数还负责容易弄乱的格式。sql注入的强制性警告。您应该使用参数,而不是格式化查询字符串。如果正在访问的表不包含用户输入值,SQL注入是否会造成问题?很抱歉,我一直在努力阅读有关安全性的文章,有很多东西需要学习。对于您的查询,由于id是一个数值,所以可能性很低。但使用参数只是一个好习惯。参数还负责处理容易弄乱的格式。