I am using Csharp Linq to create the following report
I have two tables as below
#Users nid pid name 1 1 name1 2 1 name2 #Transactions nid tid location dcode 1 T1 L1 D1 2 T1 L2 D1 2 T2 L1 D1 2 T2 L3 D1
The report contains
    a) columns from users table where nid != pid
    b) columns from transactions where tid == T2 and nid = results from a)
    c) the combination can have only one top row  in result 
nid     name        tid     Location
2       name2       T2      L1
the second record will not be present
- 2     name2       T2      L3
I have tried the following, using join
var report = (from u in users where u.nid != u.pid
                      join t in transactions
                      where t.tid == "T2"
                      on u.nid equals t.nid
                      select new 
                      {
                        // the report columns
                      }).Distinct().ToList();
on the second 'where' a Error is displayed
thank you for any assistance
Swap filtering and joining parts of your query and rename tid into t.tid or other desired filtering clause (in your example resulting table does have transactions with tid == "T1", but you try to filter with T2):
var report = (from u in users     
              join t in transactions 
              on u.nid equals t.tid     //<-- this line should precede 
              where t.tid == "T2"       //<-- this one
              && u.nid != u.pid
              select new 
              {
                    // the report columns
              }).Distinct().ToList();
Join parts can't be separated, so you can't write where until you finished join with on clause.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With