2017-06-18 37 views
0

您好,我正在使用Visual Studio 2015與實體框架5.0。使用實體框架在特定條件下讀取數據

我在表中的一些數據,如以下:

我想讀1,並用比較2,3,4,5 再次讀取相同,但這次讀取2和3,4,5 現在再次讀取,但這次讀取3並與4,5 現在再次閱讀,但這次讀取4和與5比較。

是否有任何公式讀取後像讀取所有數據1後再次讀取數據後2如3,4,5和讀取數據3後讀取4,5等等......

+1

如果你有順序標識(你可以從你的例子中得到),一個簡單的方法是訂購它們,獲得第一個,並獲得所有其他id>而不是第一個。 – jpgrassi

回答

0

假設你有想要比較的行的id用,在以下的例子中,是硬編碼用於說明(5),可以執行以下操作:

var subData = data.Skip(data.Count(x => x.Id <= 5)).ToList(); 

這個碼Wi會得到一個包含Id = 5之後的所有數據的記錄列表。

1

沒有提及數據量或者是否有序列標識符,所以我只是假設了一些東西。

如果您需要對所有數據進行比較,您可以直接進行比較,只需對數據進行排序並循環即可。

var entities = dbContext.Entity.OrderBy(e => e.Id).ToList(); 

foreach (var currentEntity in entities) 
{ 
    // all other records except current... 
    var allRecords = dbContext.Entity.Where(e => e.Id > currentEntity.Id).ToList(); 

    // do your compare stuff... 
} 

由於數據已經訂購了,所以foreach會爲您獲取下一個數據。但是,如果您沒有順序標識,您仍然可以應用相同的代碼,但只需在另一個對您有意義的字段中應用排序。例如按日期。或者,如果你想做一次性比較,意思是說,你會收到一個ID,並想和其他人進行比較,那麼當然你不需要一個foreach。只需按ID排序並使用內部查詢或使用Skip(如@Mohamed建議)。