2017-09-30 30 views
0

我有保存列表我如何添加0-9和0-99散列列表

public class PhraseSource 
{ 
    public int CategoryId { get; set; } 
    [PrimaryKey, NotNull] 
    public string Id { get; set; } 
    public string English { get; set; } 
    public string Romaji { get; set; } 
    public string Kana { get; set; } 
    public string Kanji { get; set; } 
    public string WordType { get; set; } 
    public int Modified { get; set; } 
} 

我想補充兩個附加字段,所以我已經添加了這些變量:

public int OneHash { get; set; } 
public int TwoHash { get; set; } 
  • 凡OneHash的值是從ID
  • 凡TwoHash的值是從ID的0-99變化的散列0-9變化的哈希

有人可以給我一些關於如何填充這兩列的建議嗎?

+0

你是指從0-9和0-99變化的散列 - 這些字段的用途是什麼? –

+2

Id.GetHashCode()%10跳轉。 –

+0

@HansPassant - 你的建議是我想我在找什麼。有沒有一種方法可以處理列表的所有記錄,並執行一次OneHash和TwoHash列的設置。這只是需要一次,因爲這個列表只用來保存源數據,一旦加載它從來沒有改變,除非希望添加哈希信息。 – Alan2

回答

2

您可以使用

public int OneHash => Math.Abs(Id.GetHashCode() % 10); 
public int TwoHash => Math.Abs(Id.GetHashCode() % 100); 

它採用ID字符串的哈希碼,並返回一個部門的提醒。

+0

我認爲這是我需要的,但我需要在創建列表後將值添加到這兩個字段中。我如何將這個應用於列表中的每個元素? – Alan2

+1

您不需要將值添加到OneHash或TwoHash;這些是由Id「派生」的。如果設置了Id,則如果您訪問其中一個屬性,則將在運行時計算OneHash和TwoHash。例如。如果(phraseSource.OneHash == 9)將在運行時處理,如if(phraseSource.Id.GetHashCode()%10 == 9) –

+0

謝謝。只需確認一下,這將只檢索0-9和0-99的值? – Alan2