C#ASP.net中链接多个数组的最佳方法

时间:2009-07-14 15:11:58

标签: c# asp.net-mvc .net-3.5 c#-3.0

我有3个阵列来自网络服务......

Countries : Consists of Key - Value
Regions   : Consists of Id - Name - CountryCode(fk: countries)
Areas     : Consists of Id - Name - CountryCode - RegionID(fk: regions)

(fk只显示它的信息位,外键,将它与前一个数组相关联)

我坚持最好的方式(最优化)将这些链接在一起,LINQ Joining看起来很头疼,我不确定HashSets。

任何想法?

***附加; *这将作为APP存储在应用程序状态,因为它需要每天刷新一次(在我看来,通过简单地每天刷新一次应用程序比存储在应用程序中更快数据库和基于日期戳的更新。

3 个答案:

答案 0 :(得分:5)

我很好奇为什么你说LINQ Joining看起来很头疼:它正是LINQ to Objects的用途(查询你的内存中对象并提供诸如这些对象之间的连接之类的服务)。

LINQ的一个潜在缺点是性能开销,但说实话,它还没有成为我的主要问题。

语法只是from obj1 in source1 join obj2 in source2 on <conditional> select {obj1.prop, obj2.prop}

这反映了SQL非常重要,这就是意图。

(使用你的例子:

from a in Areas
join r in Regions 
 on a.RegionID equals r.Id
join c in Countries 
 on r.CountryCode equals  c.Key
select new {c.Value, r.Name, a.Name, a.Id };

答案 1 :(得分:1)

你不能把它们转储到DataSet吗?这是DataTables的集合,您可以预定义Relations

private void CreateRelation() 
{
    // Get the DataColumn objects from two DataTable objects 
    // in a DataSet. Code to get the DataSet not shown here.
    DataColumn parentColumn = 
        DataSet1.Tables["Customers"].Columns["CustID"];
    DataColumn childColumn = 
        DataSet1.Tables["Orders"].Columns["CustID"];
    // Create DataRelation.
    DataRelation relCustOrder;
    relCustOrder = new DataRelation("CustomersOrders", 
        parentColumn, childColumn);
    // Add the relation to the DataSet.
    DataSet1.Relations.Add(relCustOrder);
}

答案 2 :(得分:0)

Linq加入真的并不是那么糟糕,一开始语法有点搞笑,但你很快习惯了。