Выборка из 2х таблиц

285
25 декабря 2017, 10:25

Есть 2 таблички, у которых общее значение Name с ключом. Таблицы Char и GMember. С таблицы Char мы достали нужные данные к каждому Name и получили список по убыванию, а вот к сожалению достать значение G_Name из таблички GMember и прикрутить его к текущему списку не получается. Прошу не бить палками, новички.

Запросили мы некий список из таблички Char

using (DataBase entity = new DataBase())
{
    repeater.DataSource = entity.Char
                    .OrderByDescending(ob => ob.RCount)
                    .ThenByDescending(ob => ob.Level)
                    .Take(50).ToList();
    repeater.DataBind();
}

.ascx

<asp:Repeater ID="repeater" runat="server">
    <ItemTemplate>
        <tr>                
            <td><%# Container.ItemIndex + 1 %></td>
            <td><%# Eval("Name") %></td>
            <td><%# Eval("Level") %></td>
            <td><%# Eval("RCount") %></td>
            <td><%=Functions.GCount %></td>    
        </tr>
    </ItemTemplate>
</asp:Repeater>

В итоге был получен нужный нам список, кроме значения GCount. Потому как для каждого значения Name в Char - своё значение GCount. В Functions он выглядит следующим образом:

public static string GCount
{
    get
    {
        using (DataBase entity = new DataBase())
        {
            var Count = entity.GMember
                          .Select(c => c.G_Name)
                          .FirstOrDefault();
            return Count.ToString();
        }
   }
}

Вообщем получили одно и то же значение GCount для всего списка. В базе данных кстати у таблицы Char и GMember одна и та же запись Name.

GMember

namespace Data.MsSql.DataBase
{
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    [Table("GMember")]
    public partial class GMember
    {
        [Key]
        [StringLength(10)]
        public string Name { get; set; }
        [Required]
        [StringLength(8)]
        public string G_Name { get; set; }
        public byte? G_Level { get; set; }
        public byte G_Status { get; set; }
    }
}

Char

namespace Data.MsSql.DataBase
{
    using System;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    [Table("Character")]
    public partial class Char
    {
        [Required]
        [StringLength(10)]
        public string AccountID { get; set; }
        [Key]
        [StringLength(10)]
        public string Name { get; set; }
        public int? Level { get; set; }
        public int RCount { get; set; }
    }
}
Answer 1

Во всём вашем коде я не разобрался, но суть понятна. Вам просто нужно биндить не сразу объекты базы данных а сначала подготовить данные, и создать на основе данных из DB классы ViewModel уже такими какими что бы им можно было отображать в ваших контролах.

READ ALSO
C#, MySQL, и знаки вопроса вместо кириллицы

C#, MySQL, и знаки вопроса вместо кириллицы

Здравствуйте, скажу сразу, я перерыл весь интернет в поисках ответа на вопрос и ни один из вариантов мне не помогПроблема: Пишу десктопное...

389
Как удалить альфа канал в изображении?

Как удалить альфа канал в изображении?

Делаю кроппинг картинкиКак удалить альфа-канал в изображении?

223
Как преобразовать массив в Стек

Как преобразовать массив в Стек

Во первых возможно ли это ?

174
Backend под Linux [требует правки]

Backend под Linux [требует правки]

Доброе время сутокРешили с другом начать изучать Веб

184