.net - IEqualityComparer(of Object) For Intersect Or Except Not Working
Jun 15, 2012enter code hereWant to remove items from a Main list , but give an error 'Unable to cast object of type <ExceptIterator>d__99'1['
[Code]...
enter code hereWant to remove items from a Main list , but give an error 'Unable to cast object of type <ExceptIterator>d__99'1['
[Code]...
I am trying to compare the contents of 2 collections in a unit test in .NET using MSTEST. To make things simple, instead of having to .Sort() and then loop through the collection and compare items one at a time, I've found the new and very cool .Intersect Extension method.
It seems to work great by doing:
Assert.AreEqual(expected.Count, actual.Intersect(expected).Count)
However, now that I have a test which needs to be case-sensitive, it breaks. I've tried sending Intersect's second parameter StringComparer.Ordinal,StringComparer.InvariantCulture, and StringComparer.CurrentCulture... no luck..
EDIT: here is the data:
Actual:
(0) "FOO" String
(1) "foo" String
(2) "Foo" String
[Code]....
It seems to be removing a matching duplicate 'foo', and a matching duplicate 'BAZ'. Perhaps there is a better way to assert collections are matching?
_EDIT2: I think Intersect() removes duplicates, which is why this is breaking. I Found the CollectionAssert Class.
I'm doing some LINQ which requires a custom comparer, so I created a new class implementing IEqualityComparer. However, when I use it, I have to create an instance of it each time.
Dim oldListOnly = oldList.Except(newList, New MyEqualityComparer)
Dim newListOnly = newList.Except(oldList, New MyEqualityComparer)
I may be misunderstanding how .NET works, but it seems wasteful to create a new comparer each time. I really just want one instance (the equivalent of static in C++/C#).So I tried creating a "static" class, which in vb.net is a module. But got an 'Implements' not valid in Modules error.I then tried making the Equals and GetHashCode function shared methods on my class, but got this error: Methods that implement interface members cannot be declared 'Shared'.how to accomplish my goal here?
I have the following function that loops through a directory and checks for a specified folder and file[code]...
View 1 RepliesI stumbled upon an article regarding the Birthday Paradox and it's implications when overriding the GetHashCode method, I find myself in a bind.In tests, we found that in calls to the ToLookup() Extension, only GetHashcode is used, despite providing the implementation for Equals.
I think I understand why this happens, the internal working of ToLookup, HashSet, Dictionary, etc, use the HashCodes to store and/or index their elements?Is there a way to somehow provide the functionality so that the equality comparison is actual performed using the equals method? Or should I not be concerned with the collisions? I haven't done the maths myself, but according to the first article I linked, you would only need 77,163 elements in a list before reaching a 50% chance of collision.
If I understand this correctly, an Equals() override that compares property by property such as
Return (a.Property1 == b.Property1 && a.Property2 == b.Property2 && ...)
should have a zero chance of collision? So how can I get my ToLookup() to equality compare this way?
In case you need an example of what I mean:
[Code]...
I can get that to work with an override of GetHashcode(), no problems. But I don't want to use GetHashcode because if I have, for example, 109,125 elements in my list, apparently I'm already at 75% chance of collision? If it used aforementioned Equals() override, I think I'd be at 0%?
I am trying to implement a simple IEqulityComparer to use with LINQ collections. I have written the following code which is reduced to its simplest form for discussion purposes...
Public Structure bob
Dim SiteID As Integer
Dim fred As String
End Structure
[code]....
The problem that I have is that both functions throw the compiler warning "function 'getHashCode' (or 'Equals') shadows an overridable method in the base class 'Object'. To override the base class method, this method must be declared 'Overrides'."
However, if I declare them as Overrides, I get the error "function 'GetHashCode' cannot be declared Overrides because it does not override a function in the base class."!!I am also getting a compiler error on the "Implements" line to the effect that I must implement "getHashCode" but I presume that is a result of the first problem.
I'm working with VB.Net, and have two one-dimensional Arrays. Is there an Inbuilt function for finding the elements that are common to both of them? Or do I have to write one for myself?
View 4 RepliesHow to intersect two dataTables in vb.net 2.0? I want to get common rows in two datatables and add it in third datatable.
View 1 RepliesHow to know if two rectangles intersect. i know for polygon center, length, width and angle. i want to fast algorithm for visual basic 2008.
View 12 Replieshow to know if two rectangles intersect i know for polygon center, length, width and anglei want to fast algorithm for visual basic 2008
View 5 RepliesI've a class that has a list of IDs with a function for adding new IDs from a list of objects.I've got this resolved, but I'm sure this can be done with much less code.Public Class Page
Private _IdList As List(Of Integer)
Private _HasNewItems As Boolean = False
Public Sub AddItems(ByVal Items As List(Of Item))
Dim itemsID = From itemX In Items _
Select itemX.ID
[Code]...
There's this form with many random lines connected to one another using
Me.CreateGraphics.DrawLines(Pens.Black, pointsArray)
There's also a Picturebox that can be moved using the arrow keys...
I want a messagebox to show when the picturebox overlaps/intersects with the lines.
How can I do this?
I write a code in vb.net 2005 as below :use a listbox and picturebox but the problem that circle is random.
Public Class tasfrms
Public color_circle As New Color
Public color_lines As New Color
[code].....
The following code worked fine in MS Office 2007 PowerPoint Macro.However, in 2010 it crashes at the line "For each cht in..Function CopySheetChart(Sheet As Excel.Worksheet, Row As Integer, Col As Integer, _
Workbookname As String) As Boolean
' Copy the Excel sheet that has top left copy to RowOffset from the page header, and column Col
Dim Cht As Excel.ChartObject
[Code]...
why is this code not working?
Dim tcplistener As New System.Net.Sockets.TcpListener
This does not compile with the error "Overload resolution failed because no accessible 'New' accepts this number of arguments." The thing is, I have to declare it as New because otherwise I will get a null-reference exception...
I have problem working with FolderBrowserDialog object in VISUAL BASIC. It only returns folders and it does not return shortcuts. Is there any way that when I use this object I would be able to see let's say shortcuts that I have on desktop?
View 1 RepliesI am passing value via an object property form1 to form2 my class was working before, but I guess when i create the instance of the form2 in form1 my calls in my class no longer work properly.
[Code]...
I have a few classes, one is a form, the other is the source of the datagridview. I want to be able to sort the columns of the datagridview by clicking on the header. Here are the classes that I am dealing with:
Imports DiscoveryByte.AddTools.Misc_Tools
Public Class ViewDiscoveryFlashCards
Private DBBindingSource As New BindingSource
[code].....
I am somewhat new to object oriented programming and am attempting to flatten a Linq object hierarchy by using a shim class.how to initalize a derived class with property values from a base class?I have two objects, a base object with about 100 properties, and a derived object which inherits from the base object and adds a few additional properties beyond those of the base object. My simple constructor creates the derived object, but I am looking for a way to initialize the derived object properties with values from the base object.Right now I am using reflection to iterate over the properties individually and I suspect there may be a better way. The following example shows my shim class constructor for the derived class, and two properties:
newProperty1 - a new string property of the derived class
flattenedProperty2 - a new string property of the derived class, copied from a 2nd-level object of the base class
Code example:
Public Class derivedObj
Inherits baseObj
Private _newProperty1 As String[code].......
Is this the correct constructor approach to flatten the object hierarchy using a shim class? My second question relates to initialization of properties in the derived class. The constructor above creates the derived object, but what is the best way to initialize the derived object properties with values from the base object? The following code uses reflection to iterate over the properties individually, but I suspect there may be a better way.
Code example:
' property names are in the string array fieldNames
'baseObjQuery is an ienumerable of baseObj
'derivedObjList is a list of derivedObj[code].....
Is there a simple way to initialize values for the properties in the derived object based upon the values of the common properties in the base object?
I found on msdn samples and modified (add Thread.GetDomaind.UnhandledException)
<SecurityPermission(SecurityAction.Demand, Flags:=SecurityPermissionFlag.ControlAppDomain)> _
Public Sub Main()
' Add the event handler for handling UI thread exceptions to the event.[code].....
It appears that my favorite thing in the world is tackling projects that are beyond my current knowledge and abilities. I have a little project that I am working on which is a simple image viewer stocked with (upon completion) your standard Load..., Next/Previous, Zoom In/Out, Actual Size, and Full Screen capabilities. However, I am running into a few snags:
(1) I've been able to get my "Load..." button to display a file dialog box, but I cannot seem to get a working filter (with which only image file types are allowed to be selected) in working order.
(2) I have a PictureBox object (entitled PictureBox1) that displays the image selected via the file dialog box, but it loads images in their full size (1:1/100% zoomed) state without scrollbars, etc. to allow me to navigate the loaded image. I would like to have it load the image, initially, to fit within the dimensions of PictureBox1 and from there be able to zoom in/out via my "Zoom In/Out" and "Actual Size" buttons and be able to scroll if the zoom level is beyond the dimensions of PictureBox1.
(3) It dawned on me that I haven't the faintest idea how to get my "Next/Previous" buttons to allow the user (me) to navigate, in succession, the images contained in the folder in which the currently loaded image is stored. [code]
If it is deemed that this thread is inappropriately requesting help, I ask that it be locked/deleted quickly as I recognize that this is a large community with many discussions going without need of unwelcome posts.
I am getting following error whenever I want to use IIf function inside entity framework query.
LINQ to Entities does not recognize the method 'System.Object IIf(Boolean, System.Object, System.Object)' method, and this method cannot be translated into a store expression.
What do I need to convert?
Dim CEESearchByAppNo = From CEEsearch In dbCEE.tblScanneds _
Where CEEsearch.AppNo = iAppNo
[code].....
How do I calculate the direction an object is facing in degrees, if object A is at x1, y1 and facing object B which is at x2, y2?
View 2 RepliesOccasionally I encountered this exception message while trying to download file from a server using System.Net.FtpWebRequest and System.Net.FtpWebResponse Object.
Download a file.ftpRequest_DL.Method = WebRequestMethods.Ftp.DownloadFile get the response object
Dim ftpResponse_DL As FtpWebResponse = CType(ftpRequest_DL.GetResponse, FtpWebResponse)
[Code]...
If I declare my object at the beggining of my page class, and instantiate it in a dropdownlist selected_index change event. Shouldn't this object be available thru out the entire page and also persist thru a postback? I lose the object in my selected date change event in my calendar.
[Code]...
I have an ssis package that takes a flat file and dumps it to SQL. During that process, 150 columns need to have '-' and '.' removed from them. I have done this using a Script Transformation.
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Dim column As IDTSInputColumn90
Dim rowType As Type = Row.GetType()
[code]....
Edit I've discovered that this line is the problem
Dim strCol As String = columnValue.GetValue(Row, Nothing).ToString()
I am trying to start the process with the following parameters When I try to start it though I get an System.nullreferenceexception: Object reference not set to an instance of an object
Dim exepath As String = Application.StartupPath + "inffmpeg.exe"
Dim sr As StreamReader
Dim cmd As String = " -i """ + input + """ -ar 22050 -y """ + output + """"
Dim ffmpegOutput As String
[code]....
In the Session_Start of the Global.asax i have
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
Session("login") = False
[code]....
Why i am getting error the error Object reference not set to an instance of an object. at line
If Current.Session("login") Is Nothing Then
while checking for the login state as follows?
If GetLogin = False Then
'Do something
End if
I mean i have already created the instance on the Session_Start... Haven't i?
I have an object that is defined as a global variable based on custom class. Within that class I have an event that gets fired a certain intervals. These events are fired on the same thread as where the object is declared. How do I create a global object, but have the events within that object fire on a separate thread?
View 2 Replies