Hi,
Is it possible to return a single value and an enumerable collection using LINQto SQL?
The problem is, I'm trying to do paging across a large recordset. I only want to return 10 rows at a time so I'm using .Skip(20).Take(10) approach.
However I need to know the total number of records so I can show an appropriate page x of y.
Trying to avoid two separate queries.
Thanks
I have extended some functionality to a DataContext object (called "CodeLookupAccessDataContext") such that the object exposes some methods to return results of LINQto SQL queries. Here are the methods I have defined:
public List<CompositeSIDMap> lookupCompositeSIDMap(int regionId, int marketId)
{
var sidGroupId = CompositeSIDGroupMaps.Where(x => x.RegionID.Equals(regionId) && x.MarketID.Equals(marketId))
.Select(x => x.CompositeSIDGroup);
IEnumerator<int> sidGroupIdEnum = sidGroupId.GetEnumerator();
if (sidGroupIdEnum.MoveNext())
return lookupCodeInfo<CompositeSIDMap, CompositeSIDMap>(x => x.CompositeSIDGroup.Equals(sidGroupIdEnum.Current), x => x);
else
return null;
}
private List<TResult> lookupCodeInfo<T, TResult>(Func<T, bool> compLambda, Func<T, TResult> selectLambda)
where T : class
{
System.Data.Linq.Table<T> dataTable = this.GetTable<T>();
var codeQueryResult = dataTable.Where(compLambda)
.Select(selectLambda);
List<TResult> codeList = new List<TResult>();
foreach (TResult row in codeQueryResult)
codeList.Add(row);
return codeList;
}
CompositeSIDGroupMap and CompositeSIDMap are both tables in our database that are represented as objects in my DataContext object. I wrote the following code to call these methods and display the T-SQL generated after calling these methods:
using (CodeLookupAccessDataContext codeLookup = new CodeLookupAccessDataContext())
{
codeLookup.Log = Console.Out;
List<CompositeSIDMap> compList = codeLookup.lookupCompositeSIDMap(5, 3);
}
I got the following results in my log after invoking this code:
SELECT [t0].[CompositeSIDGroup]
FROM [dbo].[CompositeSIDGroupMap] AS [t0]
WHERE ([t0].[RegionID] = @p0) AND ([t0].[MarketID] = @p1)
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [5]
-- @p1: Input Int (Size = 0; Prec = 0; Scale = 0) [3]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.30729.1
SELECT [t0].[PK_CSM], [t0].[CompositeSIDGroup], [t0].[InputSID], [t0].[TargetSID], [t0].[StartOffset], [t0].[EndOffset], [t0].[Scale]
FROM [dbo].[CompositeSIDMap] AS [t0]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.30729.1
The first T-SQL statement contains a where clause as specified and returns one column as expected. However, the second statement is missing a where clause and returns all columns, even though I did specify which rows I wanted to view and which columns were of interest. Why is the second T-SQL statement generated the way it is, and what should I do to ensure that I filter out the data according to specifications via the T-SQL?
Also note that I would prefer to keep lookupCodeInfo() and especially am interested in keeping it enabled to accept lambda functions for specifying which rows/columns to return.
I need to get the list of records that does not starts with alphabets. i.e. Which starts with numeric and any special character.
I am using asp.net mvc (C#) for my application.
Whats the simple linq query to get this list?
I got this question during an interview in the past and never really dug into in, but I've put some thought into it lately and I can't come up with a good answer. When I think of attached properties my mind goes straight to UI related concepts - what benefits could be had in using attached properties with LINQ? I'm starting to think the answer is "they're not" unless I find out otherwise!
I seem to be missing something about LINQ. To me, it looks like it's taking some of the elements of SQL that I like the least and moving them into the C# language and using them for other things.
I mean, I could see the benefit of using SQL-like statements on things other than databases. But if I wanted to write SQL, well, why not just write SQL and keep it out of C#? What am I missing here?
Hello everyone,
I am using Linq-to-Sql for a C# application and am currently working on some stored procedures. The application is for a newspaper, and a sample stored procedure is the following:
ALTER PROCEDURE dbo.Articles_GetArticlesByPublication
@publicationDate date
AS
SELECT
*
FROM
Articles
WHERE
Articles.PublicationDate=@publicationDate
Anyway, this query gets all of the articles where the publication date is equal to the argument (publicationDate). How can I alter this so that the argument can handle multiple publication dates?
Also, I'd prefer not to use "BETWEEN," rather, I want to pick and choose dates.
I am using LINQ expressions in my code
like this
var obj = Collection.Single(collection = (collection.ShortName.Equals("AAA")));
The problem is that this line works fine for me, no problems.
But when I upload the same executable to some remote machine with same 32 bit Windows XP. The code execution is just stopping at this line of source.
Can anyone help me.
Hi
i've just started reading up on PLINQ and find it fasinating.
I'm using NHib-Linq in my projects - does anyone know if there's any benefit/problems using PLINQ type queries with NHLinq?
w://
Can any one tell me the LINQ 2 SQL version (in vb.net) of the below Left outer join query.I am trying to get all Employees with name "Shyju" and their address line 1 if it exist in the address table
SELECT E.EMPLOYEE_NAME,
E.AGE,A.ADRESS_LINE1
FROM EMPLOYEE_MASTER E
LEFT OUTER JOIN
ADDRESS_MASTER A
ON E.ID=A.EMPLOYEE_ID
WHERE E.EMPLOYEE_NAME='Shyju'
Thanks in advance
Hi,
I have object A which contains multiple instances of object B, which in turn contains multiple instances of object C. I need to write a function which, given Object A needs search through instances of objects B and objects C and find a particular object C. How would I do this using LINQ?
Hi,
Is there any way to cache LINQto SQL queries by looking at the parameters that were previously passed and bypass the database all together?
I know L2S caches some database calls, but I'm looking for a permanant solution as in, even if the applciation restarts, that cache reloads and never asks the database again.
Are there any frameworks for C#?
Hi All,
i would like to iterate over the items of a List<T>, except the first, preserving the order. Is there an elegant way to do it with LINQ using a statement like:
foreach (var item in list.Skip(1).TakeTheRest())
{....
I played around with TakeWhile , but was not successful. Probably there is also another, simple way of doing it?
Hi all,
i am having query for update the node value using Linq,
For example i am have to update
<Student>
<studentdetail>
<studentname>test</studentname>
<libraryid>hem001</libraryid>
</studentdetail>
</Student>
in above xml i want to change the value of Student name "test" ti something else like "Undertest"
regards
NewDev
Reading about both Linqto SQL and Entity Framework I have developed the impression that EF is more suitable for apps that get data from multiple data sources.
But as I am reading about MVC2 models I see an example where EF is more loosely coupled with your data model.
If I have to add or remove some columns from a table then what is involved in updating my model or DAL with each of these implementations?
How can i rewrite the below SQL query to its equivalent LINQ 2 SQL expression (both in C# and VB.NET)
SELECT t1.itemnmbr, t1.locncode,t1.bin,t2.Total
FROM IV00200 t1 (NOLOCK)
INNER JOIN
IV00112 t2 (NOLOCK)
ON t1.itemnmbr = t2.itemnmbr
AND t1.bin = t2.bin
AND t1.bin = 'MU7I336A80'
Using Linqto SQL:
if(!parentlist.childlist.Contains(row1))
parentlist.childlist.Add(row1);
else
How do I update the required childlist row with row1? Each row of the child list has a unique id.
parentlist implements IEnumerable and childlist is IList.
I have multiple C# projects in a Visual Studio solution right now that will all use the same SQL Server database.
What is the proper way to share LINQ-to-SQL classes between projects?
I'm considering just copying the dmbl files into each project, but I think that may be too redundant. Is there a better way to approach this?
Can anyone answer me what are the differences of
Session.Query
Session.Linq and
Session.QueryOver
What I'm really interested in:
What would be supported in the future versions.
What should I start to use in a clean project.
Please tell me your thoughts about these three...
Thanks,
Zoltán
If I have two tables; Drivers keyed by DriverId and Trips with foreign keys DriverId and CoDriverId, and I want to find all trips where a driver was either the driver or co-driver I could code this in Transact-SQL as
select d.DriverId, t.TripId
from Trips t inner join Drivers d
on t.DriverId = d.DriverId or t.CoDriverId = d.DriverId
How could this be coded as a LINQ query?
I am using VS2010 and C#
When I map/select my database tables with LINQto SQL I have to option to change the "member" propery, but when i delete the table (because I changed something in the schema for example) and add it again the member value gets "reset". Is it possible to set/override this member programmaticly, so that I dont have to change it by hand everytime
I mean the member option of
'<'Table Name="dbo.table1" Member="table1"
I would like to use Linq instead of below function :
Friend Function IsCollectionInTable2(ByVal apps As DataTable, ByVal collectionId As String) As Boolean
For Each row As DataRow In apps.Rows
If row("CollectionId").ToString = collectionId Then Return True
Next
Return False
End Function
The best I can do is below:
Friend Function IsCollectionInTable(ByVal apps As DataTable, ByVal collectionId As String) As Boolean
Return (From row In apps.AsEnumerable()
Where (row.Field(Of String)("CollectionId") = collectionId)
Select row.Field(Of String)("CollectionId")).Count > 0
End Function
I would like to use Exists or Any in above function. Performance could be an issue,
If I want to get a user that has the email address of '[email protected]', how do I pass that as a parameter in linq?
ie.:
var a = from u in Users
where u.Email = @email
Select u;
So this would be used in my method:
public static GetuserByEmail(string email)
Do I just pass in the variable or?
I have struggled converting this SQL statement toLINQto SQL VB.Net 9.0. I have used Linqer but no success. Any help would be appreciated
select t.TeeId,
t.DescriptionId,
t.[Description],
t.Rating,
t.Slope,
case when d.TotalHoles <> h.TotalHoles then 0
else 1 end [Status]
from dbo.CourseDescription d
inner join dbo.CourseTees t
on t.DescriptionId = d.DescriptionId
inner join (select TeeId, count(*) as TotalHoles
from dbo.CourseHoles
group by TeeId) h
on h.TeeId = t.TeeId
where d.CourseId = 1