2

我是 LINQ 的新手,正在尝试编写一个查询,该查询根据运行时输入的变量选择要查询的表。基本思想是我为 Persons 表中的每个人都有一个 Contacts 表。我可以从实体中获取我想要的所有数据,但是在查询时找不到另一个表。这是代码;

    public void GetFriendsList(string username, Person[] people)
    {     
        string table = "FL." + username;

        DataTable friends = new DataTable(table);

            var filePaths =
            from row in friends.AsEnumerable()
            select row.Field<string>("Friend's Name");

        var friendsArray = filePaths.ToArray();

        for (int i = 0; i < people.Length; i++)
        {
            people[i] = GetPerson(friendsArray[i]);
        }     
    }

我也尝试过在顶部使用类似以下的内容来执行此操作,但 VS 无法识别 FillDataSet 函数。

DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
FillDataSet(ds);

DataTable products = ds.Tables[table];

任何建议表示赞赏,抱歉含糊不清。我假设我缺少连接字符串或其他东西。我已经完成了这个并且代码显然没有连接到表格。

4

2 回答 2

4

如果有点粗鲁,评论中的欣快是正确的。你不可能为每个人都有一个单独的联系人表。正常的方法是有一个单独的联系人表并将外键链接回Persons表。这样,您可以在单个查询中完成所有操作,而不必担心查询直到运行时才知道的表。

至于您列出的代码为什么不起作用,您的怀疑基本上是正确的:它没有连接到任何数据库。您正在创建一个新的空表并尝试对其进行查询。要使其正常工作,您需要使用SqlConnection连接到数据库,然后使用SqlDataAdapter及其Fill方法来填充您的DataTable。(但同样,如果可能,请不要这样做,请阅读 SQL 外键。)

于 2012-05-12T05:56:45.867 回答
3

首先,您并没有真正使用 LINQ 来查询您的数据库。

但最重要的是,您的数据库中应该只有一个与表Contacts有关系的Persons表。

获取 Microsoft 示例 Northwind 数据库 (http://www.microsoft.com/en-us/download/details.aspx?id=23654) 并了解有关数据库架构设计的更多信息。

于 2012-05-12T05:55:08.560 回答