LINQ查询以获取Silverlight中的列标头
本文关键字:Silverlight 查询 获取 LINQ | 更新日期: 2023-09-27 18:00:33
我正在使用WCF服务开发Silverlight应用程序,需要从特定表中获取所有列标头。我一直在尝试编写一个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>
));
这是我对解决方案的最佳尝试,很难真正理解您所尝试/编写的内容。
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;
}
这可能会有所帮助:
http://jesseliberty.com/2009/08/13/linq-for-silverlight-developers/
我不知道您所说的表是什么意思,但如果它是一个数据网格,那么链接应该会有所帮助。