2011-03-15 43 views
0

通常我只是使用鍵值對的字典,但我需要三列。VB.NET,C#:我需要一個存儲過程來返回三行,我應該如何存儲它們?

然後我需要比較搜索詞,看它是否與第二列中的任何值匹配。

+0

爲什麼不具有三個屬性的三個值加載到一個靜態類型的對象? (並且,由於您不清楚行/列,如果有多行,只需將它們加載到此對象的IEnumerable <>'中。) – David 2011-03-15 18:24:27

+0

因爲我需要緩存結果,該結果工作正常兩個值,所以我用了一個字典,現在我需要三個vals – William 2011-03-15 18:26:55

+0

沒有理由不能在應用程序的任何層緩存任何數據。你的緩存工作如何?如果您需要緩存對象,請緩存該對象。除非緩存系統被破壞,否則對象是Dictionary還是任何其他對象應該沒有區別。我想所有它需要是可序列化的。 – David 2011-03-15 18:38:09

回答

0
class YourDatum 
{ 
    int Id { get; set; } 
    string Value1 { get; set; } 
    string Value2 { get; set; } 

    public bool Match(string term) 
    { 
     return Value2.ToUpperInvariant() == term.ToUpperInvariant(); 
    } 
} 

var cachedResults = new Dictionary<int, YourDatum>(); 

//your database calls go here 
foreach (var dbRow in dbRows) 
{ 
    cachedResults.Add(
     idFromDb, 
     new YourDatum {Id=idFromDb, Value1=valueFromDb1, Value2=valueFromDb2}); 
} 

//find a match in the results later on... 
string searchTerm = "abcdef"; 
List<YourDatum> matches= 
    (from datum in cachedResults where 
    datum.Match(searchTerm) select datum).ToList(); 
1

如果您想要快速和骯髒地執行操作,您可以返回一個DataTable。否則,如果數據表示某些內容,則可以創建自己的類來保存對象上三個屬性中的三個值。

public class MyDataObject 
{ 
    public string Value1 { get; set; } 
    public string Value2 { get; set; } 
    public string Value3 { get; set; } 

    public bool MatchesSearchTerm(string term) 
    { 
    return Value2.Equals(term, StringComparer.OrdinalIgnoreCase); 
    } 
} 
+0

我不建議我的命名約定,對於您正在使用的數據,您肯定會有更有意義的東西。 – NerdFury 2011-03-15 18:26:30

+0

我需要緩存查詢的結果,是否可以緩存 – William 2011-03-15 18:31:53

+0

根據您使用的緩存類型,任何對象都可以「緩存」。像你說的那樣,緩存就像字典一樣簡單。看到我的答案。 – 2011-03-15 18:36:15

0

什麼是「搜索項」?爲什麼你需要首先存儲行?

假設您有充分理由在本地存儲結果,並且您只關心「第二列中的任何值」,則可能需要探索存儲List<dataTypeOfSecondColumn>

0
public class QueryCache 
{ 
    public class DataObject 
    { 
     public bool Data1 { get; set; } 
     public string Data2 { get; set; } 
     public int Data3 { get; set; } 
    } 

    Dictionary<string, DataObject> _cache = new Dictionary<string, DataObject>();  

    public void AddToCache(DataObject obj_) 
    { 
     _cache.Add(obj_.Data2, obj_); 
    } 

    public bool ExistsInCache(string searchTerm_) 
    { 
     return _cache.ContainsKey(searchTerm_); 
    } 

    public DataObject this[string searchTerm_] 
    { 
     get 
     { 
      return _cache[searchTerm_]; 
     } 
    } 
} 
相關問題