首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq中的TableName

Linq中的TableName
EN

Stack Overflow用户
提问于 2009-01-24 13:00:19
回答 2查看 506关注 0票数 1

我在Vb.net中的Sql查询是这样的:

代码语言:javascript
复制
Dim TableName As String ="City"
Dim Str As String="Select * from "+TableName+""

我从另一个表单.how得到了TableName,我们可以在linq中做这个吗?我们可以在Linq查询中动态使用TableName吗?

请帮帮我?

EN

回答 2

Stack Overflow用户

发布于 2009-01-24 13:12:40

很抱歉我的例子是用C#编写的,但是我的Vb已经生疏了。我能读懂它,但不能很好地写在我的头上。

我能想到的最好的方法是使用反射和扩展方法,而不是LINQ语法。

代码语言:javascript
复制
 PropertyInfo info = dataContext.GetType().GetProperty( "City" );
 IQueryable table = info.GetValue( dataContext, null ) as IQueryable;

 var query = table.Where( t => t.Column == "Value" )
                  .Select( t => t.OtherColumn );

在本例中,我假设为LINQtoSQL,因此我将从datacontext中获取对象。如果您使用的是其他对象,则需要调整查找对象的方法。

您还可以根据表名的值使用一堆if-then语句。如果可能的表的数量是固定的并且很小,这可能会更好。

票数 1
EN

Stack Overflow用户

发布于 2009-12-18 18:32:57

我有了这个想法,谢谢,非常有帮助,但是我不能看到那些属性。

代码语言:javascript
复制
    string linqObjectName = "Test";
    PropertyInfo info = db.GetType().GetProperty(linqObjectName);
    IQueryable table = info.GetValue(db, null) as IQueryable;


    PropertyInfo[] properties = table.GetType().GetProperties();



    ltr.Text += "properties: <hr size=1/>";
    foreach (PropertyInfo p in properties)
    {
        ltr.Text += p.Name + "<br />";

    }

这就是结果;

属性:

上下文IsReadOnly

编辑:我找到了!

代码语言:javascript
复制
PropertyInfo[] properties = 
        table.Where("WebRef = \"" + webref + "\"").ElementType.GetProperties(); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/475984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档