LINQ Query для получения заголовков столбцов в Silverlight - PullRequest
0 голосов
/ 28 июня 2011

Я работаю над приложением Silverlight, используя службу WCF, где мне нужно получить все заголовки столбцов из определенной таблицы. Я пытался написать запрос LINQ, чтобы сделать это, но до сих пор я не смог заставить его работать правильно. Я не нашел очень много информации, касающейся этого. Я нашел следующую информацию, но у меня возникли трудности с подключением к моим данным.

http://www.c -sharpcorner.com / UploadFile / dhananjaycoder / 4856 / # ReadAndPostComment

До сих пор я пробовал следующее ... Это не скомпилируется из-за DataContext, нуждающегося в параметре, и вот где я застрял.

public List<string> GetColumnHeaders()
{
    DataContext context = new DataContext();
    List<string> columnList = new List<string>();
    var dataModel = context.Mapping;

    foreach (var r in dataModel.GetTables())
    {
        if (r.TableName.Equals("table1", StringComparison.InvariantCultureIgnoreCase))
        {
            foreach (var c in r.RowType.DataMembers)
            {
                columnList.Add(c.MappedName);
            }
        }
    }
    return columnList;
}

Вместо использования DataContext context = new DataContext(); Я попробовал следующее, но я знаю, что проблема та же.

var dataModel = new AttributeMappingSource()
                 .GetModel(
                      typeof(RepositoryBase<HBS_SondesEntities>
                 ));

Ответы [ 2 ]

1 голос
/ 29 июня 2011

Вот моя лучшая попытка найти решение, трудно понять, что вы пробовали / написали.

public List<string> GetColumnHeaders(){
  List<string> columnList = new List<string>();
  using (SondesEntities context = new HBS_SondesEntities()){
    foreach (var r in context.Mapping.GetTables()){
       if (r.TableName
             .Equals("table1", StringComparison.InvariantCultureIgnoreCase)) {

           foreach (var c in r.RowType.DataMembers){
               columnList.Add(c.MappedName);
           }
       }
     }
  }
  return columnList;
}

Если предположить, что я что-то не жирный, то здесь код тот жеlinq.

public List<string> GetColumnHeaders(){

    List<string> columnList = new List<string>();
    using (SondesEntities context = new HBS_SondesEntities()){
        var query = (
           context.Mapping.GetTables()
             .Where(t=>t.TableName
                        .Equals(
                         "table1", 
                          StringComparison.InvariantCultureIgnoreCase)
                        )
             ).SelectMany(x=>x.RowType.DataMembers);

        columnList  = query.Select(m=>m.MappedName).ToList()
    }
    return columnList;
}
0 голосов
/ 28 июня 2011

Это может помочь:

http://jesseliberty.com/2009/08/13/linq-for-silverlight-developers/

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

...