我试图创建一个Windows应用程序,我有一个从oracle中获取的表。阅读完表后,我需要将一些列值转换为其他值。例如:
表FruitbyDate
Fruit Fruitdate
Apple 6/4/15
Pearl 6/6/15
Kiwi 6/20/15
Watermelon 6/9/15
我想将水果从文本转换为int(apple = 1,pearl = 2,kiwi = 3,watermelon = 4)并将表格更新为:
Fruit Fruitdate
1 6/4/15
2 6/6/15
3 6/20/15
4 6/9/15
我是C#的初学者想要了解如何在oracle中转换和更新表。我只学习了Enumerations的基础知识。但是没有足够的知识来更新每个记录从名称到数字和字符串到int。谢谢!
答案 0 :(得分:2)
您正在寻找的是战略模式。实现这一点的一种非常简单的方法是简单地使用Dictionary<string, int>
。例如,您可能会遇到以下情况:
static Dictionary<string, int> fruitDict = new Dictionary<string, int>
{
{ "Apple", 1 },
{ "Pear", 2 } // etc.
};
然后,您可以遍历DataTable
的行(或从DataReader
拉出来),然后返回查找:
myFruitVariable[currentIndex] = fruitDict[row["Fruit"]];
请注意,在进行查找之前,您应该检查以确保fruitDict
ContainsKey()
。
使用策略模式有更复杂的处理方法,但字典可能应该足够了。
答案 1 :(得分:1)
这听起来像是enum
的经典案例。这里有一些示例代码可以帮助您入门(如果不知道这是一个控制台应用程序,还是ASP.Net网站等,很难说更多):
public enum FruitType
{
Unknown = 0,
Apple = 1,
Pearl = 2,
Kiwi = 3,
Watermelon = 4
}
// RawData has the fruit names as strings
// FruitInformation is the transformed value you're trying to create
public IEnumerable<FruitInformation> ProcessFruits(IEnumerable<RawData> rawData)
{
var result = new List<FruitInformation>();
foreach (var entry in rawData)
{
FruitType parsedFruit;
if (!Enum.TryParse(typeof(FruitType), entry.fruit, out parsedFruit))
{
parsedFruit = FruitType.Unknown;
}
result.Add(new FruitInformation(parsedFruit, entry.FruitDate));
}
return result;
}