2012-05-21 4 views
0

Я готовлю отчет, в котором мне нужно классифицировать каждого пользователя в системе. Есть около 15 тыс. Пользователей.Каким будет лучший способ вывода нескольких списков?

Таким образом, я просматриваю каждый пользователь, проверяя их для различных условий и на основе условий присваивает каждому пользователю список.

Существует около 8-9 списков, что означает, что в системе насчитывается около 8-9 категорий пользователей.

Теперь мне нужно сообщить об этом пользователям в каком-то удобном для понимания формате. Я думал о CSV-файле, где столбцы будут представлять эти 8-9 категорий и под каждым заголовком столбца, у меня будут пользователи из этого списка.

Я могу написать все эти списки в CSV, но затем они появляются один под другим. Я не знаю, как я могу написать их в табличном формате, чтобы его было легко читать и понимать.

E.g. давайте рассмотрим, что у меня есть три категории пользователей.

category1: abc, def, ghi 
category2: lmn, opq, rst 
category3: uvw, xyz, adf 

Так что мой вывод должен быть, как показано ниже:

category1  category2  category3 
abc    lmn    uvw 
def    opq    rst 
uvw    xyz    adf 

Я открыт для других предложений, а также о том, как я могу выводить результаты в удобном для понимания формата.

+0

Будет ли пользователь быть более чем в одном списке? – yamen

+0

В идеале пользователь не должен присутствовать в нескольких списках. Но, есть очень мало шансов на перекрытие. – aspnetdeveloper

ответ

0

Для целей экспорта данных, или для хранения в базе данных вы можете использовать только один формат:

user category 
user1 category1 
user1 category2 
user2 category1 
user2 category2 

Excel, а также любую другую платформу отчетности с возможностью поворота эти данные в требуемом формате - например

user category1 category2 category3 
user1 x   x 
user2 x      x 
0

Если вы будете использовать эти CSV в чем-то вроде Excel, я считаю, что формат, который у вас есть сейчас, идеален.

Для вывода результатов, что о чем-то вроде этого:

// Get categories with all users in it 
// and get max count in a category across all categories 
List<List<Category>> categories = GetCategoriesWithUsers(); 
int maxUsersInCategory = categories.Max(x => x.Count); 

using (StreamWriter writer = new StreamWriter("output.csv") 
{ 
    // Loop through each user per category 
    for (int userCount = 0; userCount < maxUseresInCategory; userCount++) 
    { 
     string outputLine = string.Empty; 

     // Loop through each category 
     foreach(List<Category> category in categories) 
     { 
      // If category end isn't reached, add user 
      if (category.Length > userCount) 
      { 
       outputLine += category[userCount]; 
      } 

      outputLine += ","; 
     } 

     outputLine = outputLine.Remove(outputLine.Length - 1); 
     writer.WriteLine(outputLine); 
    } 
}