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

C# 我需要一个存储过程来返回三行,我应该如何存储它们?,c#,vb.net,C#,Vb.net,通常我只对键值对使用一个字典,但我期望有三列 然后,我需要比较搜索词,看看它是否与第二列中的任何值匹配。如果您想快速而准确地返回一个数据表,就可以了。否则,如果数据表示某些内容,则可以创建自己的类来保存对象上三个属性中的三个值 public class MyDataObject { public string Value1 { get; set; } public string Value2 { get; set; } public string Value3 { get; set;

通常我只对键值对使用一个字典,但我期望有三列


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

如果您想快速而准确地返回一个数据表,就可以了。否则,如果数据表示某些内容,则可以创建自己的类来保存对象上三个属性中的三个值

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);
  }
}

搜索词是什么?为什么首先需要存储行


假设您有充分的理由将结果存储在本地,并且只关心第二列中的任何值,那么您可能希望探索存储列表。

为什么不将这三个值加载到具有三个属性的静态类型对象中?而且,由于您不清楚行/列,如果有多行,只需将它们加载到此对象的IEnumerable中。因为我需要缓存结果,这很好。我只需要两个值,所以我使用了字典,现在我需要三个参数,没有理由不能在应用程序的任何层缓存任何数据。您的缓存现在是如何工作的?如果需要缓存对象,只需缓存对象即可。除非缓存系统被破坏,否则对象是字典还是任何其他对象都应该是一样的。我想它所需要的是可序列化的。我不建议使用我的命名约定,对于正在处理的数据,您肯定会有一些更有意义的东西。我需要缓存查询的结果,即任何对象都可以缓存,具体取决于您使用的缓存类型。正如你所说,缓存就像字典一样简单。看看我的答案。
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();
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_];
        }
    }
}