VB.NET,C#:我需要一个存储过程来返回三行,我应该如何存储它们?

时间:2011-03-15 18:21:31

标签: c# vb.net

通常我只使用字典作为键值对,但我期待三列。

然后我需要比较搜索词以查看它是否与第二列中的任何值匹配。

4 个答案:

答案 0 :(得分: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);
  }
}

答案 1 :(得分:0)

什么是“搜索字词”?为什么你需要首先存储行?

假设您有充分的理由在本地存储结果而您只关心“第二列中的任何值”,您可能需要探索存储List<dataTypeOfSecondColumn>

答案 2 :(得分: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();

答案 3 :(得分: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_];
        }
    }
}