[英]Linq Query to Get Distinct Records from Two Tables
我有兩個表 - tblExpenses和tblCategories如下
ID (PK),
Place,
DateSpent,
CategoryID (FK)
ID (PK),
Name
我嘗試了各種LINQ方法來獲取上述兩個表中的所有不同記錄,但沒有取得多大成功。 我嘗試使用UNION和DISTINCT,但它沒有用。
上面兩個表在我的項目的Model部分中定義,該部分又將在SQLite中創建表。 我需要從兩個表中檢索所有不同的記錄,以在gridview中顯示值。
請為我提供一些投入來完成這項任務。 我做了一些研究來找到這個問題的答案,但似乎沒有什么接近我想要的。 如果我復制這個問題,請原諒。
這是我試過的UNION,DISTINCT方法:
(from exp in db.Table<tblExpenses >()
from cat in db.Table<tblCategory>()
select new { exp.Id, exp.CategoryId, exp.DateSpent, exp.Expense, exp.Place, cat.Name }).Distinct();
我認為當你加入兩張桌子時,聯盟已經做了一些你可以嘗試的東西
var query=(from c in db.tblExpenses select c).Concat(from c in
db.tblCategory select c).Distinct().ToList();
您將始終獲得DISTINCT
記錄,因為您也選擇了tblExpenses.ID
。 ( 除非有多個具有相同ID的類別。但這當然是非常非常糟糕的設計。 )
請記住,在LINQ中創建JOIN
時,字段名稱和數據類型應該相同。 字段tblExpenses.CategoryID
為可空字段?
如果是這樣,試試這個JOIN
:
db.Table<tblExpenses>()
.Join(db.Table<tblCategory>(),
exp => new { exp.CategoryId },
cat => new { CategoryId = (int?)cat.ID },
(exp, cat) => new {
exp.Id,
exp.CategoryId,
exp.DateSpent,
exp.Expense,
exp.Place,
cat.Name
})
.Select(j => new {
j.Id,
j.CategoryId,
j.DateSpent,
j.Expense,
j.Place,
j.Name
});
您可以嘗試以下查詢:
像這樣的SELECT DISTINCT查詢:
SELECT DISTINCT Name FROM tblCategory INNER JOIN tblExpenses ON tblCategory.categoryID = tblExpenses.categoryID;
將結果限制為輸出字段中的唯一值。 查詢結果不可更新。
要么
像這樣的SELECT DISTINCTROW查詢:
SELECT DISTINCTROW Name FROM tblCategory INNER JOIN tblExpenses ON tblCategory.categoryID = tblExpenses.categoryID;<br/><br/>
查看整個基礎表,而不僅僅是輸出字段,以查找唯一的行。
參考: http : //www.fmsinc.com/microsoftaccess/query/distinct_vs_distinctrow/unique_values_records.asp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.