MVC :: Returning Custom Or Combined Query With Linq?
Feb 2, 2010
I have a simple model that contains about 6 tables dealing with customers. As long as I am dealing with one table at a time or returning the single or list of an entire class everything is great. I am struggling with having to return subsets or combinations of the class information. For example customer sales by year.
This query involves these classes:
Customer
CustomerOrder
I need to return something like
CustomerName
Year
TotalSales
I can build the query fine. Returning that to a model is what puzzles me. I have no class that I form a generic.list with and nothing to inherit on the view. What is the best way to handle this?
I am facing a big problem with simple linq query.. I am using EF 4.0..
I am trying to take all the records from a table using a linq query:
var result = context.tablename.select(x=>x);
This results in less rows than the normal sql query which is select * from tablename;
This table has more than 5 tables as child objects (foreign key relations: one to one and one to many etc)..
This result variable after executing that linq statement returns records with all child object values without doing a include statement.. I don't know is it a default behavior of EF 4.0 . I tried this statement in linqpad also..but there is no use... But interesting thing is if I do a join on the same table with another one table is working same is sql inner join and count is same..but I don't know why is it acting differently with that table only.. Is it doing inner joins with all child tables before returning the all records of that parent table?
I have a query using LINQ-to-SQL. It queries an underlying database table Rooms. It uses Where conditions to narrow down the results, namely:
Gender. Current Occupancy < Max Occupancy Available Flag is Checked
I know this should return results but it keeps returning an empty set. Any ideas? Code is below
Dim selectedHalls = (From sh In dbHalls.Rooms _ Where sh.gender = Session("gender").ToString _ Where sh.max_occupancy > sh.current_occupancy _ Where sh.is_available = 1 _ Select sh.building_name).Distinct()
UPDATE: I've verified that the issue is with the statement where sh.is_available = 1, which doesn't make sense since this is a bit field.
i m using L2S for database operations in my asp.net mvc application i have following simple query in my repository
[Code]....
below is the defination of GetDayPassed method
[Code]....
there is no compile time error, however, when i execute the code it gives me invalidOperationException with following message.
[Code]....
can i get around this? if calling a method in query is not allowed how can i make a simple calculation in Linq query instead of calling GetDayPassed method?
Here is idea i have 6 different fields to allow search if i give the option for user to enter value in any of 6 option or enter combined fields how to use sql query to retrieve the value.
I've build a linq query.But i want a random selection so its not always ID : 1,2,3,4,5,6 How can i randomize this var? I like to bind it to a repeater.//TagCloud:
Random rand = new Random(); var tc1 = from i in JumpTide.cms.menu.GetMenuItems(32) select new
The SQL is below - each result is coming up 3 times rather than just once.
SELECT Consignments.LegacyID, TripDate, CollectionName, DeliveryName, Pallets, Weight, BaseRate, Consignments.FuelSurcharge, AdditionalCharges, BaseRate * Quantity AS 'InvoiceValue', Consignments.Customer, InvoiceNumber, CASE WHEN child.LegacyID = Consignments.Customer THEN child.LegacyID WHEN parent.LegacyID = Consignments.Customer THEN parent.LegacyID ELSE this.LegacyID END AS 'InvoiceAcc' FROM SageAccount this LEFT JOIN SageAccount parent on parent.LegacyID = this.InvoiceAccount LEFT JOIN SageAccount child on this.LegacyID = child.InvoiceAccount JOIN Consignments on (Consignments.Customer = this.LegacyID AND this.Customer = 'True') OR (Consignments.Customer = parent.LegacyID AND parent.Customer = 'True') OR (Consignments.Customer = child.LegacyID AND child.Customer = 'True') WHERE (this.LegacyID = @Customer) AND (TripDate BETWEEN @fromdate AND @todate) AND (InvoiceNumber IS NOT NULL)
The SQL was given to me for another similar query, but this time I have modified it to try to use it for the query I'm doing now, so I'm assuming that I'm doing something stupid.
For some reason my query is returning multiple states. It will return records for CA, TX, AZ. All I want is NY that's it and to me it looks really clear.
SELECT [name1], [name2], [mail_street1], [mail_street2], [mail_city], [mail_state], [mail_zip], [phone], [website] FROM [flat_list] WHERE (([rl] = 'x') OR ([rs] = 'x') AND ([mail_state] = 'NY')) ORDER BY [name1], [name2]
Is there a way to cap the number of records returned when an .Include() method is called on an ObjectQuery<>? Basically, if one of my entities is in a one-to-many relationship, such as a Band entity to a list of Fan entities (where a band can have any number of fans), how can I limit the number of fans returned?
In the example: var band = ctx.Bands.Include("Fans").SingleOrDefault(b => b.BandId == someBandId);
If I use the Include, it will return all fans. How can I query that Fans navigation property to return only a subset or max?
I am having problems returning a string value through a stored procedure/linq to a label. Everything works fine if I return an integer value but I cant get a string value to bind to a label. I get the error message
Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat) +201 Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value) +66 [InvalidCastException: String "System.Data.Linq.SqlClient.SqlPr" to 'Integer' is invalid‚]
This is the stored procedure ALTER PROCEDURE test AS Select ProductName From Products
This is the vb page Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim db As New DataClassesDataContext Dim product As Integer = db.test.ToString Label1.Text = product End Sub
This is the aspx page <form id="form1" runat="server"> <asp:Label ID="Label1" runat="server" Text=""></asp:Label> </form>
I'm having an issue with SSRS 2008 inside VS 2008, where I have a report that is connected to the database via a Data Source which is working correctly, but when I execute a query inside the query designer to test my data, it returns zero records.
The issue I'm having is that the EXACT same query inside SSMS returns the correct record. I'm really stumped as to why it all is connected, but not returning the record. I have another report in the solution that uses the same database, but that one actually works ok.
I have integrated sandbox paypal into my application.After successful payment i am not getting success in the query string.Instead i get is return to merchant but if i do cancel i get the cancel in the query string
I'm using a JQuery plugin [URL] to add auto-completion to a "city" textfield. The component calls an ASP.NET page that simply loads an array of all possible city values (>8000) and then iterates that array returning those that start with the text the user has so far entered.
The thing is, it's pretty slow in real use. It lags behind what the user types to the extent that most of the time the user probably won't notice that it's there.
So, my question is, how can I speed it up?
I had thought that an array would be a better way to go than putting the data in a database and having to hit that multiple times. Do others agree that having this information hard-coded is the way to go given that it's not at all volatile and needs to be all about speed of return?
If so, what would you look at to improve the speed of performance? Should I be caching the data on application start and accessing it from memory? Would I be better off instead with multiple arrays, each containing values starting with a particular letter so I can go straight to the relevant one and thus iterate a much smaller array? Or am I missing a much more obvious way to go about this?
So the BlogPostTags table only contains 2 fields, BlogPostID and TagID.
When i run the query above i get 3 results back. Same blogpost 3 times but with 1 tag in each. It should return 1 post with 3 tags. The problem lies in the Tags query above.
I have a web app for our golf club. When I compute handicap index for each golfer, I have to select the most recent scores and then a subset of those scores depending on how many rounds of golf the golfer has played. All the scores are entered into a single SQL Express table called "Rounds". Verbally, this is what I'm trying to do:
1) select the twenty most recent golf scores (sort on date descending, "take(20)") [if less than 20 records, then select all available];
2) for this set of records, select the 10 lowest scores (or smaller number if golfer has less than 20 rounds);
3) compute the average round differential for the subset of records, etc. to calculate handicap index (this step is working ok...)
My current VB code has this LINQ query (which is flawed -- it selects the lowest handicap differential scores of ALL records for the filtered user):
[Code]....
How do I modify this query to accomplish items 1) & 2) above? It seems this should be simple, but my experience with queries is still limited.
I have a composite control that returns a different control depending on a property value. The works however I can't seem to set the value of a textbox or the selected item in a dropdown list. Code does not produce error. What am i missing here??
I always have this problem returning an out parameter from sql server using linq. So I have to use other means may be dataset. The following is the stored procedure: ALTER PROCEDURE [dbo].[InsertIntoTestProfile]
I have a search box on a web application that is to use a query I have built in Access to search through projects to find any that are related to the text entered in the search box.
The query in Access is just made up of parameters that use wildcards to search through all the fields. In Access the query works fine and returns the correct data but when I try and link this all up to a ListView in Visual Studio, the ListView just diplays the message "No data was returned"
Below is my page-behind code, hopefully you can see why it is not working but it looks like it should work to me.