通过LINQ确定表是否具有主键

时间:2015-09-04 21:08:45

标签: c# sql-server linq primary-key

我在C#程序中有一些代码,我正在使用LINQ构建一个表列表:

List<string> tables = 
(from tb in db.Tables.Cast<Table>()
where this.FilterTables(tb, this.Options)
select string.Format("[{0}].[{1}]", tb.Schema, tb.Name)).ToList(); 

我希望能够轻松地在列表中添加一个标志,指示表是否已定义主键(我们不希望排除没有主键的表,但程序需要以不同的方式处理它们)。我们提出了以下内容,因为我们希望可以工作,但没有这样的运气。请注意,在下面的代码中,“HASPRIMARYKEY”只是一个占位符,我用它来说明我们要做的事情 - 我希望已经有类似的东西,但我似乎无法找到它。 / p>

List<Tuple<string,bool>> tables = 
(from tb in db.Tables.Cast<Table>()
where this.FilterTables(tb, this.Options)
select new Tuple<string, bool>
  (string.Format("[{0}].[{1}]", tb.Schema, tb.Name), 
  tb.HASPRIMARYKEY)).ToList();

我找到了解决方案(在StackOverflow和其他地方),它们展示了如何确定主键列的名称,但这不是我们需要的。我也有SQL查询将标志返回给我,但我们只想将它添加到现有的LINQ查询。

有人可以告诉我是否有一种简单的方法可以做到这一点?

提前谢谢!

0 个答案:

没有答案
相关问题