Как я могу показать результаты 2 запроса в linq для Listview? - PullRequest
1 голос
/ 18 мая 2011
<asp:ListView ID="ListView1" runat="server" GroupItemCount="5">
    <LayoutTemplate>
        <table runat="server" id="table1">
            <tr runat="server" id="groupPlaceholder">
            </tr>
        </table>
    </LayoutTemplate>
    <GroupTemplate>
        <tr runat="server" id="tableRow">
            <td runat="server" id="itemPlaceholder" />
        </tr>
    </GroupTemplate>
    <ItemTemplate>
        <td id="Td1" runat="server">
            <%-- Data-bound content. --%>
            <asp:Label ID="NameLabel" runat="server" Text='<%#Eval("yyyy") %>' />
        </td>
         <td id="Td2" runat="server">
            <%-- Data-bound content. --%>
            <asp:Label ID="NameLabel" runat="server" Text='<%#Eval("nnnn") %>' />
        </td>
    </ItemTemplate>
</asp:ListView>
var by1 = from x in model.x
          xxxx
          select new
          {
              x.yyyy
          };
ListView1.DataSource = by1;
ListView1.DataBind();

var by2 = from z in model.z
          zzzz
          select new
          {
              z.nnnn
          };
ListView1.DataSource = by2;
ListView1.DataBind();

это пример (не нужно реально работать с такой записью). Я не знаю, как получить в одном списке свойства diffrent из 2 различных запросов.как:

zzzzz:1111
zzzzz:2222
nnnn:ffff
nnnn:gggg
zzzz:3333

спасибо.

1 Ответ

0 голосов
/ 18 мая 2011

Взгляните на этот пример, который я подбросил, чтобы показать вам метод Linq Union.Это работает только тогда, когда оба списка / IEnum имеют одинаковый тип (в нашем случае Model).

void Main()
{
List<Model> by1 = new List<Model>();

by1.Add(new Model {Name = "zzzz",Value = "1111" });
by1.Add(new Model {Name = "fdgdfg",Value = "1234"});
by1.Add(new Model {Name = "zzzz",Value = "2222"});

List<Model> by2 = new List<Model>();
by1.Add(new Model {Name = "nnnn",Value = "ffff"});
by1.Add(new Model {Name = "nnnn",Value = "gggg"});
by1.Add(new Model {Name = "zzzz",Value = "3333"});

// Join the results of by1 and by2 as both are List<Model>

object dataSource = by1.Union(by2); // Results in a IEnumerable<Model>

// Bind the dataSource to the ListView

ListView1.DataSource = dataSource;
ListView1.DataBind();
}

И модель

public class Model {

public string Name { get;set;}
public string Value { get;set;}
}

Редактировать

Вы можете быть «модным» и даже выбрать объединение в анонимный тип.Например:

    object dataSource = by1.Union(by2).Select(item=>new
                            {
                                 yyyy = item.Name,
                                 nnnn = item.Value
                            });

, который даст вам IEnumerable со свойствами yyyy и nnnn.

...