2010-07-14 96 views
11

我想基於多個列(attribute1_name,attribute2_name)獲取不同的行,並使用Linq-to-Dataset從數據表中獲取數據行。從Linq中的數據表中選擇不同的行

Screenshot

我想結果是這樣

attribute1_name attribute2_name 
--------------  --------------- 

Age    State 
Age    weekend_percent 
Age    statebreaklaw 
Age    Annual Sales 
Age    Assortment 

怎麼做薄Linq到數據集?

回答

32

如果它不是一個類型化的DataSet,那麼你可能想要做這樣的事情,使用LINQ到數據集擴展方法:

var distinctValues = dsValues.AsEnumerable() 
         .Select(row => new { 
          attribute1_name = row.Field<string>("attribute1_name"), 
          attribute2_name = row.Field<string>("attribute2_name") 
         }) 
         .Distinct(); 

確保您在代碼的開頭有一個using System.Data;語句,以啓用Linq到數據集的擴展方法。

希望這有助於!

+0

我用attribute1_name那裏我得到重複記錄 – James123 2010-07-14 02:56:24

+0

@上面你應該在row.Field期間使用「row」。 。我從另一個循環中使用了一些其他數據目標對象,這使得我有了重複的值。後來我糾正了。 – Hari 2014-11-14 15:16:02

+0

如果連續有4列並且您想根據2列進行區分,該怎麼辦? – Jogi 2016-05-10 20:47:00

4

像這樣:(假設一個類型化的DataSet)

someTable.Select(r => new { r.attribute1_name, r.attribute2_name }).Distinct(); 
+0

不要你仍然需要調用AsEnumerable()? – 2010-07-14 02:09:27

+0

@Justin:不適用於輸入數據集。鍵入數據集中的表繼承'TypedTableBase ',它實現'IEnumerable '。 – SLaks 2010-07-14 02:10:47

+0

請提供我...如何迭代它們 – James123 2010-07-14 02:16:21

0

檢查此鏈接

get distinct rows from datatable using Linq (distinct with mulitiple columns)

或者試試這個

var distinctRows = (from DataRow dRow in dTable.Rows 
        select new { col1=dRow["dataColumn1"],col2=dRow["dataColumn2"]}).Distinct(); 

編輯:放置在缺少第一大括號。

+0

你錯過了一個'{'。 – SLaks 2010-07-14 13:42:41

+0

@SLaks - 花括號去哪裏? – MAW74656 2012-02-10 21:23:05

+1

@ MAW74656:圍繞匿名類型。 – SLaks 2012-02-10 23:40:11

3
var Test = (from row in Dataset1.Tables[0].AsEnumerable() 
      select row.Field<string>("attribute1_name") + row.Field<int>("attribute2_name")).Distinct(); 
0
Dim distinctValues As List(Of Double) = (From r In _ 
DirectCast(DataTable.AsEnumerable(),IEnumerable(Of DataRow)) Where (Not r.IsNull("ColName")) _ 
Select r.Field(Of Double)("ColName")).Distinct().ToList() 
+3

歡迎來到Stack Overflow!你會考慮增加一些敘述來解釋爲什麼這段代碼有效嗎?是什麼使它成爲這個問題的答案?這對詢問問題的人以及任何其他人來說非常有幫助。 – 2013-04-23 18:51:44

0

我們可以得到不同的類似例子如下圖所示

//example 
      var distinctValues = DetailedBreakDown_Table.AsEnumerable().Select(r => new 
      { 
       InvestmentVehicleID = r.Field<string>("InvestmentVehicleID"), 
       Universe = r.Field<string>("Universe"), 
       AsOfDate = _imqDate, 
       Ticker = "", 
       Cusip = "", 
       PortfolioDate = r.Field<DateTime>("PortfolioDate") 

      }).Distinct();