<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>C#</title><link>http://forums.asp.net/37.aspx</link><description>Discussions/Questions about the C# language. &lt;a href="http://aspadvice.com/SignUp/list.aspx?l=13&amp;c=23" target="_blank"&gt;Email List&lt;/a&gt;</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Re: Linq. Query</title><link>http://forums.asp.net/thread/3284514.aspx</link><pubDate>Thu, 09 Jul 2009 19:41:59 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:3284514</guid><dc:creator>tkraft</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/3284514.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=37&amp;PostID=3284514</wfw:commentRss><description>&lt;p&gt;If anyone wanders in here...&lt;/p&gt;&lt;p&gt;the public class TestComparer : IEqualityComparer&amp;nbsp; needs to have the type specified:&lt;/p&gt;&lt;p&gt;public class TestComparer : IEqualityComparer&amp;lt;Test&amp;gt;&lt;/p&gt;</description></item><item><title>Re: Linq. Query</title><link>http://forums.asp.net/thread/2469533.aspx</link><pubDate>Sun, 06 Jul 2008 05:56:11 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2469533</guid><dc:creator>Paul Linton</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2469533.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=37&amp;PostID=2469533</wfw:commentRss><description>&lt;p&gt;Try this&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;pre class="coloredcode"&gt;&lt;span class="cmt"&gt;// You must have some class like this already&lt;/span&gt;
&lt;span class="kwd"&gt;public class&lt;/span&gt; Info {
    &lt;span class="kwd"&gt;public int&lt;/span&gt;? ID {&lt;span class="kwd"&gt;get&lt;/span&gt;; &lt;span class="kwd"&gt;set&lt;/span&gt;;}
    &lt;span class="kwd"&gt;public string&lt;/span&gt; Name {&lt;span class="kwd"&gt;get&lt;/span&gt;; &lt;span class="kwd"&gt;set&lt;/span&gt;;}
}
&lt;span class="cmt"&gt;// Load some data so I can test&lt;/span&gt;
List&amp;lt;Info&amp;gt; A = &lt;span class="kwd"&gt;new&lt;/span&gt; List&amp;lt;Info&amp;gt; { &lt;span class="kwd"&gt;new&lt;/span&gt; Info { Name = &lt;span class="st"&gt;&amp;quot;John&amp;quot;&lt;/span&gt; }, &lt;span class="kwd"&gt;new&lt;/span&gt; Info { Name = &lt;span class="st"&gt;&amp;quot;Mary&amp;quot;&lt;/span&gt; }, &lt;span class="kwd"&gt;new&lt;/span&gt; Info { Name = &lt;span class="st"&gt;&amp;quot;Peter&amp;quot;&lt;/span&gt; } };
List&amp;lt;Info&amp;gt; B = &lt;span class="kwd"&gt;new&lt;/span&gt; List&amp;lt;Info&amp;gt; { &lt;span class="kwd"&gt;new&lt;/span&gt; Info { ID = 1, Name = &lt;span class="st"&gt;&amp;quot;John&amp;quot;&lt;/span&gt; }, &lt;span class="kwd"&gt;new&lt;/span&gt; Info { ID = 2, Name = &lt;span class="st"&gt;&amp;quot;Robert&amp;quot;&lt;/span&gt; }, &lt;span class="kwd"&gt;new&lt;/span&gt; Info { ID = 3, Name = &lt;span class="st"&gt;&amp;quot;Angela&amp;quot;&lt;/span&gt; }, &lt;span class="kwd"&gt;new&lt;/span&gt; Info { ID = 4, Name = &lt;span class="st"&gt;&amp;quot;Andrew&amp;quot;&lt;/span&gt; } };

&lt;span class="cmt"&gt;// Make List C&lt;/span&gt;
List&amp;lt;Info&amp;gt; C = A.Select(a =&amp;gt; &lt;span class="kwd"&gt;new&lt;/span&gt; { Name = a.Name }).Except(B.Select(b =&amp;gt; &lt;span class="kwd"&gt;new&lt;/span&gt; { Name = b.Name })).Select(c =&amp;gt; &lt;span class="kwd"&gt;new&lt;/span&gt; Info { ID = GetID(c.Name), Name = c.Name }).ToList();
&lt;span class="cmt"&gt;// Append C to B&lt;/span&gt;
B = B.Union(C).ToList();
&lt;/pre&gt;&lt;pre class="coloredcode"&gt;To create list C you need to make an IEnumerable with just the Name field, this is what the Select(a=&amp;gt; new {Name = a.Name}) does.  The Except query operator is one way to do the &amp;#39;not equals&amp;#39; join.  Then create a new IEnumerable&amp;lt;Info&amp;gt; using GetID and the Names.&lt;/pre&gt;&lt;pre class="coloredcode"&gt;Appending C to B is just the Union query operator.&lt;/pre&gt;&lt;pre class="coloredcode"&gt;Hope this helps&lt;/pre&gt;</description></item><item><title>Re: Linq. Query</title><link>http://forums.asp.net/thread/2467877.aspx</link><pubDate>Fri, 04 Jul 2008 15:11:00 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2467877</guid><dc:creator>RichardD</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2467877.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=37&amp;PostID=2467877</wfw:commentRss><description>&lt;p&gt;Assuming you have a suitable equality comparer, or have implemented IEquatable&amp;lt;T&amp;gt;, you can use the Except and Concat methods:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;C = A.Except(B) [or A.Except(B, comparer) to pass an equality comparer];&lt;/li&gt;&lt;li&gt;Update the ID of all elements in C;&lt;/li&gt;&lt;li&gt;B = B.Concat(C)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;</description></item><item><title>Re: Linq. Query</title><link>http://forums.asp.net/thread/2467858.aspx</link><pubDate>Fri, 04 Jul 2008 14:58:08 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2467858</guid><dc:creator>Jeev</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2467858.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=37&amp;PostID=2467858</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;Well See the example below. Key is that you&amp;nbsp; have to have an IEqualityComparer implemented&lt;br /&gt;&lt;/p&gt;&lt;pre class="coloredcode"&gt;&lt;b id="1"&gt;1    &lt;/b&gt; &lt;span class="kwd"&gt;static void&lt;/span&gt; Main(&lt;span class="kwd"&gt;string&lt;/span&gt;[] args)
&lt;b id="2"&gt;2    &lt;/b&gt;        {
&lt;b id="3"&gt;3    &lt;/b&gt;
&lt;b id="4"&gt;4    &lt;/b&gt;            List A = &lt;span class="kwd"&gt;new&lt;/span&gt; List { &lt;span class="kwd"&gt;new&lt;/span&gt; Test { ID = 1, Name = &lt;span class="st"&gt;&amp;quot;John&amp;quot;&lt;/span&gt; }, &lt;span class="kwd"&gt;new&lt;/span&gt; Test { ID = 2, Name = &lt;span class="st"&gt;&amp;quot;Mary&amp;quot;&lt;/span&gt; }, 
&lt;b id="5"&gt;5    &lt;/b&gt;                &lt;span class="kwd"&gt;new&lt;/span&gt; Test { ID = 3, Name = &lt;span class="st"&gt;&amp;quot;Andrew&amp;quot;&lt;/span&gt; },&lt;span class="kwd"&gt;new&lt;/span&gt; Test {ID=4,Name=&lt;span class="st"&gt;&amp;quot;Peter&amp;quot;&lt;/span&gt;} };
&lt;b id="6"&gt;6    &lt;/b&gt;            List B = &lt;span class="kwd"&gt;new&lt;/span&gt; List { &lt;span class="kwd"&gt;new&lt;/span&gt; Test { ID = 1, Name = &lt;span class="st"&gt;&amp;quot;John&amp;quot;&lt;/span&gt; }, &lt;span class="kwd"&gt;new&lt;/span&gt; Test { ID = 21, Name = &lt;span class="st"&gt;&amp;quot;Robert&amp;quot;&lt;/span&gt; }, 
&lt;b id="7"&gt;7    &lt;/b&gt;                &lt;span class="kwd"&gt;new&lt;/span&gt; Test { ID = 9, Name = &lt;span class="st"&gt;&amp;quot;Angela&amp;quot;&lt;/span&gt; },&lt;span class="kwd"&gt;new&lt;/span&gt; Test {ID=3,Name=&lt;span class="st"&gt;&amp;quot;Andrew&amp;quot;&lt;/span&gt;} };
&lt;b id="8"&gt;8    &lt;/b&gt;      
&lt;b id="9"&gt;9    &lt;/b&gt;            var ItemsinAThatDoNotExistinB = A.Except(B,&lt;span class="kwd"&gt;new&lt;/span&gt; TestComparer()).ToList();
&lt;b id="10"&gt;10   &lt;/b&gt;        }
&lt;b id="11"&gt;11   &lt;/b&gt;
&lt;b id="12"&gt;12   &lt;/b&gt;&lt;span class="kwd"&gt;public class&lt;/span&gt; TestComparer : IEqualityComparer
&lt;b id="13"&gt;13   &lt;/b&gt;    {
&lt;b id="14"&gt;14   &lt;/b&gt;        &lt;span class="kwd"&gt;#region&lt;/span&gt;&lt;span class="kwdt"&gt; IEqualityComparer Members&lt;/span&gt;
&lt;b id="15"&gt;15   &lt;/b&gt;
&lt;b id="16"&gt;16   &lt;/b&gt;        &lt;span class="kwd"&gt;public bool&lt;/span&gt; Equals(Test x, Test y)
&lt;b id="17"&gt;17   &lt;/b&gt;        {
&lt;b id="18"&gt;18   &lt;/b&gt;            &lt;span class="kwd"&gt;if&lt;/span&gt; (x.Equals(y))
&lt;b id="19"&gt;19   &lt;/b&gt;            {
&lt;b id="20"&gt;20   &lt;/b&gt;                &lt;span class="kwd"&gt;return true&lt;/span&gt;;
&lt;b id="21"&gt;21   &lt;/b&gt;            }
&lt;b id="22"&gt;22   &lt;/b&gt;            &lt;span class="kwd"&gt;else&lt;/span&gt;
&lt;b id="23"&gt;23   &lt;/b&gt;            {
&lt;b id="24"&gt;24   &lt;/b&gt;                &lt;span class="kwd"&gt;return false&lt;/span&gt;;
&lt;b id="25"&gt;25   &lt;/b&gt;            }
&lt;b id="26"&gt;26   &lt;/b&gt;        }
&lt;b id="27"&gt;27   &lt;/b&gt;
&lt;b id="28"&gt;28   &lt;/b&gt;        &lt;span class="kwd"&gt;public int&lt;/span&gt; GetHashCode(Test obj)
&lt;b id="29"&gt;29   &lt;/b&gt;        {
&lt;b id="30"&gt;30   &lt;/b&gt;            &lt;span class="kwd"&gt;return&lt;/span&gt; obj.ToString().ToLower().GetHashCode();
&lt;b id="31"&gt;31   &lt;/b&gt;
&lt;b id="32"&gt;32   &lt;/b&gt;        }
&lt;b id="33"&gt;33   &lt;/b&gt;
&lt;b id="34"&gt;34   &lt;/b&gt;        &lt;span class="kwd"&gt;#endregion&lt;/span&gt;
&lt;b id="35"&gt;35   &lt;/b&gt;    }
&lt;b id="36"&gt;36   &lt;/b&gt;    &lt;span class="kwd"&gt;public class&lt;/span&gt; Test:IEquatable
&lt;b id="37"&gt;37   &lt;/b&gt;    {
&lt;b id="38"&gt;38   &lt;/b&gt;        &lt;span class="kwd"&gt;public int&lt;/span&gt;? ID {&lt;span class="kwd"&gt;get&lt;/span&gt;;&lt;span class="kwd"&gt;set&lt;/span&gt;;}
&lt;b id="39"&gt;39   &lt;/b&gt;        &lt;span class="kwd"&gt;public string&lt;/span&gt; Name { &lt;span class="kwd"&gt;get&lt;/span&gt;; &lt;span class="kwd"&gt;set&lt;/span&gt;; }
&lt;b id="40"&gt;40   &lt;/b&gt;
&lt;b id="41"&gt;41   &lt;/b&gt;        &lt;span class="kwd"&gt;#region&lt;/span&gt;&lt;span class="kwdt"&gt; IEquatable Members&lt;/span&gt;
&lt;b id="42"&gt;42   &lt;/b&gt;
&lt;b id="43"&gt;43   &lt;/b&gt;       
&lt;b id="44"&gt;44   &lt;/b&gt;
&lt;b id="45"&gt;45   &lt;/b&gt;        &lt;span class="kwd"&gt;public bool&lt;/span&gt; Equals(Test other)
&lt;b id="46"&gt;46   &lt;/b&gt;        {
&lt;b id="47"&gt;47   &lt;/b&gt;            &lt;span class="kwd"&gt;if&lt;/span&gt; (&lt;span class="kwd"&gt;this&lt;/span&gt;.ID == other.ID  &amp;amp;&amp;amp; &lt;span class="kwd"&gt;this&lt;/span&gt;.Name.Equals(other.Name))
&lt;b id="48"&gt;48   &lt;/b&gt;            {
&lt;b id="49"&gt;49   &lt;/b&gt;                &lt;span class="kwd"&gt;return true&lt;/span&gt;;
&lt;b id="50"&gt;50   &lt;/b&gt;            }
&lt;b id="51"&gt;51   &lt;/b&gt;            &lt;span class="kwd"&gt;else&lt;/span&gt;
&lt;b id="52"&gt;52   &lt;/b&gt;            {
&lt;b id="53"&gt;53   &lt;/b&gt;                &lt;span class="kwd"&gt;return false&lt;/span&gt;;
&lt;b id="54"&gt;54   &lt;/b&gt;            }
&lt;b id="55"&gt;55   &lt;/b&gt;        }
&lt;b id="56"&gt;56   &lt;/b&gt;
&lt;b id="57"&gt;57   &lt;/b&gt;        &lt;span class="kwd"&gt;#endregion&lt;/span&gt;
&lt;b id="58"&gt;58   &lt;/b&gt;
&lt;b id="59"&gt;59   &lt;/b&gt;        
&lt;b id="60"&gt;60   &lt;/b&gt;    }
&lt;/pre&gt;&amp;nbsp;&amp;nbsp;</description></item><item><title>Linq. Query</title><link>http://forums.asp.net/thread/2467709.aspx</link><pubDate>Fri, 04 Jul 2008 13:41:02 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2467709</guid><dc:creator>shapper</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2467709.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=37&amp;PostID=2467709</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;Hello, &lt;br /&gt; &lt;/p&gt;&lt;p&gt;I have two Lists: &lt;br /&gt; &lt;/p&gt;&lt;p&gt;A = {ID, Name} = { (Null, John), (Null, Mary), (Null, Andrew), (Null, &lt;br /&gt; Peter) } &lt;br /&gt; &lt;/p&gt;&lt;p&gt;B = {ID, Name} = { (1, John), (2, Robert), (3, Angela), (4, Andrew) } &lt;br /&gt; &lt;/p&gt;&lt;p&gt;I want to find which items in A do not exist in B then: &lt;br /&gt; &lt;/p&gt;&lt;p&gt;1. Add the items to B and using an ID from the function GetID(). B &lt;br /&gt; would become: &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; B = {ID, Name} = { (1, John), (2, Robert), (3, Angela), (4, &lt;br /&gt; Andrew), (231, Mary), (45, Peter) &amp;nbsp;} &lt;br /&gt; &lt;/p&gt;&lt;p&gt;2. Then update the A list, or create a new one (C), to get the created &lt;br /&gt; items: &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; C = {ID, Name} = { (231, Mary), (45, Peter) } &lt;br /&gt; &lt;/p&gt;&lt;p&gt;How can I do this with LINQ? &lt;br /&gt; &lt;/p&gt;&lt;p&gt;I have been trying a join but with the something as &amp;quot;not equals&amp;quot; but &lt;br /&gt; it does not work. &lt;br /&gt; &lt;/p&gt;&lt;p&gt;I think I might need to do this in 3 steps: &lt;br /&gt; &lt;/p&gt;&lt;p&gt;1. Get items in B that do not exist in C; &lt;br /&gt; 2. Insert those items in C; &lt;br /&gt; 3. Get those items again from C to get the created ID&amp;#39;s with the &lt;br /&gt; correspondent names. &lt;br /&gt; &lt;/p&gt;&lt;p&gt;Could someone help me out with this? &lt;br /&gt; &lt;/p&gt;Thanks, &lt;br /&gt; Miguel</description></item></channel></rss>