2013-11-17 2 views
0

Я пытаюсь написать метод, который даст, 10 лучших записей, а также общее количество. записей, из таблицы. Не удалось выяснить, как получить доступ к выходным параметрам. Он дает ошибку. Использование общего типа IEnumerable требует 1 аргумент типа. Пожалуйста, предложите, если есть лучший способ.IEnumerable as Out Parameter

DAL:

public void GetData(out IEnumerable<tblCountry> iList, out int rowCount) 
{  
    iList = DBContext.tblCountries.Where(c=>c.Id > 0).Take(10);  
    rowCount = DBContext.tblCountries.Where(c=>c.Id > 0).Count();  
} 

BLL:

public void GetData(out IEnumerable<tblCountry> iList, out int rowCount) 
{  
    objDAL.GetData(out iList, out rowCount);  
} 

Код За:

objBLL.(out IEnumerable<tblCountry> iList, out int rowCount);//Error here 

ответ

2

В своем коде позади вас должен первым Объявите 2 переменных, а затем передавать их в качестве out параметров к методу GetData:

IEnumerable<tblCountry> iList; 
int rowCount; 
objBLL.GetData(out iList, out rowCount); 

В качестве альтернативного подхода можно разработать модель, которая будет представлять результат этой операции и имеющий метод возвращения этой модели:

public class MyModel 
{ 
    public IEnumerable<tblCountry> Countries { get; set; } 
    public int RowCount { get; set; } 
} 

, а затем:

public MyModel GetData() 
{ 
    MyModel model = new MyModel(); 
    model.Countries = DBContext.tblCountries.Where(c=>c.Id > 0).Take(10); 
    model.RowCount = DBContext.tblCountries.Where(c=>c.Id > 0).Count(); 
    return model; 
} 

и затем вызвать это примерно так:

MyModel model = objBLL.GetData(); 
// here you could use model.Countries and model.RowCount 
+0

Спасибо, что много @Darin. – Ruby