Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C ASP.net中链接多个数组的最佳方法_C#_Asp.net Mvc_.net 3.5_C# 3.0 - Fatal编程技术网

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

C# C ASP.net中链接多个数组的最佳方法,c#,asp.net-mvc,.net-3.5,c#-3.0,C#,Asp.net Mvc,.net 3.5,C# 3.0,我有3个来自Web服务的数组 Countries : Consists of Key - Value Regions : Consists of Id - Name - CountryCode(fk: countries) Areas : Consists of Id - Name - CountryCode - RegionID(fk: regions) fk只是显示它是一个信息位,外键,将它与前一个数组相关联 我一直坚持认为最好的方法是将这些链接在一起,LINQ的加入看起来很头

我有3个来自Web服务的数组

Countries : Consists of Key - Value
Regions   : Consists of Id - Name - CountryCode(fk: countries)
Areas     : Consists of Id - Name - CountryCode - RegionID(fk: regions)
fk只是显示它是一个信息位,外键,将它与前一个数组相关联

我一直坚持认为最好的方法是将这些链接在一起,LINQ的加入看起来很头痛,我也不确定哈希集

有什么想法吗


***附加;*这将作为应用程序存储在应用程序状态中,因为它需要每天刷新一次。我认为,只需每天刷新一次应用程序,比存储在数据库中并根据日期戳进行更新更快。

Linq连接真的没有那么糟糕,语法一开始有点滑稽,但是你很快就习惯了。

我很好奇为什么你会说LINQ连接看起来很头痛:它正是LINQ to对象用来查询内存中的对象并提供这些对象之间的连接等服务的

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

语法仅来自source1中的obj1,在选择{obj1.prop,obj2.prop}时连接source2中的obj2

这在很大程度上反映了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 };

你不能把它们倒进垃圾桶吗?它是一个可以预定义的集合


没有像c3.5这样的动物应该是c3.0。net3.5验证检查无法缓存该属性以供以后使用,您需要定义一个包含这些属性的展平类型,并将LINQ包装在…ToList中,这样它就不会在每次请求时都延迟执行。Jason在避免相当轻微的性能损失方面是正确的。使用new{}在此处创建的匿名类型工作得很好,坦率地说,在浏览器窗口中疯狂键入时,我很少使用自定义类:-P@Godeke当前位置我认为==应该相等吗?var commonRAR=从a中的a加入a.RegionID等于r.Id在d中加入c在r.CountryCode等于c.Key选择new{c.Value,r.Name,a.Name,a.Id};开始-是的,我习惯使用LLBLGen,它可以让我通过过载来摆脱这种情况。在身体里纠正。
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);
}