目前接觸處理數據這一塊比較多,在處理內存中的數據源的時候我一般使用的是linq,linq使用起來像sql語句一樣,用法簡單,功能強大。
最近需要實現一個從兩個不同的文件讀取不同的數據,然后根據這兩個數據的一些字段經行聯合,然后把他們的結果放到一個數據源里面里啊,一般的聯合查詢兩個數據源,都是通過一個數據源的字段和另一個數據源的字段經行匹配就可以了,如果是這樣的話在linq實現和在sql里面實現其實差不多,下面是單個條件的聯合查詢的代碼如下所示
var result1 = from l1 in list1 join l2 in list2 on l1.Id equals l2.Id select new { l1Nmae = l1.Name, l2Nmae = l2.Name };
只是linq中使用的是equals而不是sql中的“=”;
但是這只是一般都在的需求,如今我就要通過這兩個數據的兩個字段分別經行匹配才能得到我想要的數據結果,那該如何呢?
有兩種方法
一、可以利用這次查詢的結果與其中的一個數據源經過多次聯合查詢。代碼省······
二、linq的聯合查詢本身就要支持多條件的聯合查詢,代碼如下所示
var result = from l1 in list1 join l2 in list2 on new { l1.Id, l1.Age } equals new { l2.Id, l2.Age } select new { l1Nmae=l1.Name , l2Nmae=l2.Name };
通過new {}equals new {}來經行多條件的聯合的查詢。但是必須注意的是,equals左邊的new中的字段個數和類型,和右邊的必須要匹配,且是equalss左邊第一個字段匹配右邊的第一個字段,以此類推。
這樣就實現了多條件的聯合查詢。