[英]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.