Reputation: 29
I'm trying to add an object to a List but whenever I go to check what's inside the List I get "SomeNamespace.SomeClass". I'm importing an Excel table into a 2D array and I'm passing its values to an object which I'm trying to add to a List. Here's the code (I'm excluding the part where I import the Excel file because I successfully retrieve everything I need, I just can't add it to a List):
int rowNumber= xlRange.Rows.Count;
int columnNumber= xlRange.Columns.Count;
object[,] valueArray;
List<SomeClass> list = new List<SomeClass>();
valueArray = (object[,])xlRange.get_Value(XlRangeValueDataType.xlRangeValueDefault);
for (int i = 2; i <= rowNumber; i++)
{
SomeClass objRequest = new SomeClass();
objRequest.Field1 = valueArray[i, 1].ToString();
objRequest.Field2 = valueArray[i, 2].ToString();
objRequest.Field3 = valueArray[i, 3].ToString();
objRequest.Field4 = valueArray[i, 4].ToString();
objRequest.Field5 = valueArray[i, 5].ToString();
objRequest.Field6 = valueArray[i, 6].ToString();
objRequest.Field7 = valueArray[i, 7].ToString();
list.Add(objRequest);
}
foreach (var item in list)
{
MessageBox.Show(item.ToString());
}
I'm currently using VS 2010 if it can help.
Upvotes: 0
Views: 120
Reputation: 386
I can see you have 7 field in objRequest
and then you want to toString()
it?
You can either toString()
all 7 of them 1 by 1 or make a method to display all of them.
for (int i = 2; i <= rowNumber; i++)
{
SomeClass objRequest = new SomeClass();
objRequest.Field1 = valueArray[i, 1].ToString();
objRequest.Field2 = valueArray[i, 2].ToString();
objRequest.Field3 = valueArray[i, 3].ToString();
objRequest.Field4 = valueArray[i, 4].ToString();
objRequest.Field5 = valueArray[i, 5].ToString();
objRequest.Field6 = valueArray[i, 6].ToString();
objRequest.Field7 = valueArray[i, 7].ToString();
list.Add(objRequest);
}
foreach (var item in list)
{
MessageBox.Show(item.ToString());
}
foreach (var item in list)
{
MessageBox.Show("Field 1: " + item.Field1.ToString() + "\n" +
"Field 2: " + item.Field2.ToString() + "\n" +
"Field 3: " + item.Field3.ToString() + "\n" +
"Field 4: " + item.Field4.ToString() + "\n" +
"Field 5: " + item.Field5.ToString() + "\n" +
"Field 6: " + item.Field6.ToString() + "\n" +
"Field 7: " + item.Field7.ToString()
);
}
public static string toStringAll()
{
return "Field 1: " + Field1.ToString() + "\n" +
"Field 2: " + Field2.ToString() + "\n" +
"Field 3: " + Field3.ToString() + "\n" +
"Field 4: " + Field4.ToString() + "\n" +
"Field 5: " + Field5.ToString() + "\n" +
"Field 6: " + Field6.ToString() + "\n" +
"Field 7: " + Field7.ToString();
}
public override string ToString()
{
return "Field 1: " + Field1.ToString() + "\n" +
"Field 2: " + Field2.ToString() + "\n" +
"Field 3: " + Field3.ToString() + "\n" +
"Field 4: " + Field4.ToString() + "\n" +
"Field 5: " + Field5.ToString() + "\n" +
"Field 6: " + Field6.ToString() + "\n" +
"Field 7: " + Field7.ToString();
}
Upvotes: 1
Reputation: 59
Thats because SomeClass doesnt override the ToString-method.
Try to override it inside SomeClass with the following method...
public override string ToString()
{
return $"{Field1}, {Field2}"; //etc etc
}
Upvotes: 3