2013-06-24 2 views
1

Есть ли способ в C# хранить несколько различных объектов модели вида в массиве var?Хранить два разных объекта в массиве var?

пример:

var user_model = db.Database.SqlQuery<User>("SELECT * FROM [User]").ToList(); 
var product_model = db.Database.SqlQuery<Product>("SELECT * FROM [Product]").ToList(); 

var my_models = new[]{ user_model, product_model }; 
string[] object_titles = { "User" , "Product" }; 

for(int i=0 ; i<my_models.Length ; i++){ 

if(my_models[i].Count() != 0) 

    return View("../"+ object_titles[i] +"/Index", my_models[i]); 

} 

К сожалению, приведенный выше пример не работает, и я не знаю, как решить эту проблему. Может ли кто-нибудь дать мне подсказку, как ее решить?

+0

Есть ли исключение у вас есть? –

+0

«не работает» - это абсолютно ужасное описание любой проблемы, с которой вы сталкиваетесь, и я уверен, что это не текст какого-либо сообщения об ошибке, которое вы получаете либо ... –

+0

Что должен делать этот код? Я немного смущен? –

ответ

1
var my_models = new IEnumerable<object>[] { user_model, product_model }; 

попробовать это

+0

Вам лучше использовать интерфейсы или базовые классы. Возвращение к объекту каждый раз не самый лучший подход, так как просмотр вашего списка на его собственном языке действительно не дает никаких указаний на то, на какие типы объектов вы смотрите/на них, и затрудняет их программирование в других областях. – tsells

+0

это отлично работает, спасибо! – amaier

3

Прости меня, если я missunderstood, но не это было бы намного проще:

var user_model = db.Database.SqlQuery<User>("SELECT * FROM [User]").ToList(); 
var product_model = db.Database.SqlQuery<Product>("SELECT * FROM [Product]").ToList(); 

if(user_model.Any()) 
{ 
    return View("../User/Index", user_model); 
} 
else if(product_model.Any()) 
{ 
    return View("../Product/Index", product_model); 
} 
// return a default view or some other magic ... 
+0

Да, я действительно решил это, но я использую гораздо больше объектов, чем два. так что это будет очень длинное утверждение. ;) – amaier

Смежные вопросы