簡體   English   中英

如何從數據庫獲取唯一記錄?

[英]How to get unique records from database?

如何通過linq從數據庫中獲取唯一記錄?

例如:我有類似的東西

07.12.2016
07.12.2016
08.12.2016
08.12.2016
10.12.2016

我想要這樣的東西

07.12.2016
08.12.2016
10.12.2016

我的查詢:

var query2 = (from availableDate in bazaDC.seanses
                        where availableDate.id_filmu == id
                        orderby availableDate.data ascending
                        select availableDate.data).Distinct();
availableDate.DataSource = query2;
availableDate.DataBind();

和html:

<asp:Repeater ID="dostepneDaty" runat="server">
    <ItemTemplate>
        <a href="repertuar_szczegoly.aspx?id=<%# Eval("id_filmu") %>&&data=<%# Eval("data","{0:dd.MM.yyyy}") %>"><%# Eval("data","{0:dd.MM.yyyy}") %></a><br />
    </ItemTemplate>
</asp:Repeater>

Distinct()不起作用。

我將包括表定義:

CREATE TABLE [dbo].[seanse] (
    [id_seansu] INT      IDENTITY (1, 1) NOT NULL,
    [godzina]   TIME (7) NOT NULL,
    [data]      DATE     NOT NULL,
    [id_filmu]  INT      NOT NULL,
    PRIMARY KEY CLUSTERED ([id_seansu] ASC),
    CONSTRAINT [FK_seanse_ToTable] FOREIGN KEY ([id_filmu]) REFERENCES [dbo].[filmy] ([id_filmu])
);

有任何想法嗎?

據我所知,您選擇的不同對象應該可以工作,但是您始終可以通過對第一個元素進行分組和選擇來做同樣的事情。

下面的例子:

選擇不同:

 var query2 = bazaDC.seanses
             .Where(availableDate => availableDate.id_filmu == id)
             .Select(x => x.data)
             .Distinct()

通過...分組:

 var query2 = bazaDC.seanses
             .Where(availableDate => availableDate.id_filmu == id)
             .GroupBy(x => x.data )
             .Select(g => g.First())

試試這段代碼

 var query2 = (from availableDate in bazaDC.seanses
                     where availableDate.id_filmu == id
                     group availableDate by new { availableDate.id_filmu, availableDate.data } into g
                     orderby availableDate.data ascending
                     select new { g.Key.id_filmu, g.Key.data});   

您正在添加group by子句,以便它將檢索唯一值

我創建了一個dotnetfiddle示例,顯示了其按預期方式工作。 下面是該示例中使用的LINQ語句。

IEnumerable<DateTime> dataSource = (from availableDate in seanses
    where availableDate.id_filmu == 1
    orderby availableDate.data
    select availableDate.data).Distinct();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM