Linq語句
using System;
using *c;
using *;
using *;
namespace Test
{
class Person
{
public string Name { get; set; }
public string Sity { get; set; }
}
class Pet
{
public string Name { get; set; }
public string Ower { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<Person> listPerson = new List<Person>() { new Person { Name = "ren", Sity = "bj" }, new Person { Name = "renren", Sity = "sh" } };
List<Pet> listPet = new List<Pet>() { new Pet { Name = "dog", Ower = "ren" }, new Pet { Name = "mao", Ower = "rr" } };
var titles1 = from list in listPet
where (from person in listPerson select *).Contains(*)
select list;
foreach (var item in titles1)
{
*ine(* + "," + *);
}
var titles2 = from person in listPerson
where !(from list in listPet select *).Contains(*)
select person;
foreach (var item in titles2)
{
*ine(* + "," + *);
}
var titles3 = from list in listPet
where !(from person in listPerson select *).Contains(*)
select list;
foreach (var item in titles3)
{
*ine(* + "," + *);
}
}
}
}
教你如何實現LINQ查詢語句
本文就從這三個方面對實現LINQ查詢語句做簡單的介紹。
示例:class IntroToLINQ { static void Main() { //獲取數據源(此處由一個數組充當) int[] numbers = new int[7]{0,1,2,3,4,5,6}; //創建查詢(numQuery 是 IEnumerable 類型) var numQuery = from num in numbers where (num%2) == 0 select num; // 執行查詢 foreach(int num in numQuery) { *("{0,1}",num); } } } 實現LINQ查詢語句之數據源:上面示例中,數據源是一個數組,隱式支持泛型IEnumerable(T)接口,而支持IEnumerable(T)或派生接口的類型稱為"可查詢類型"。因此數組即可用LINQ進行查詢。
如果數據源還沒有作為可查詢類型出現在內存中,則LINQ提供程序必須以此方式表示數據源。例如,LINQ to XML將 xml文檔加載到可查詢的XElement類型中:using * XElement contacts = *(@"c:\*");//XElement 表示一個xml元素 在LINQ to SQL 中,必須先創建對象關系映射,然后針對這些對象編寫查詢。
LINQ會處理對象查詢與數據庫間的通信。using *; DataContext db = new DataContext(@"c:\*"); 實現LINQ查詢語句之創建查詢:查詢要先存儲在查詢變量中,并用查詢表達式進行初始化。
這個查詢變量不執行任何操作也不返回數據,只有在執行查詢時用來存儲為生成結果而必須的信息。實現LINQ查詢語句之執行查詢:上例中使用foreach的地方就是檢索查詢結果的地方,它在創建后才執行,因此稱為延遲執行,num保存返回的值。
當需要用到聚合函數查詢時,則是強制立即執行var numQuery = from num in numbers where (num%2) == 0 select num; int evenNumCount = *(); 若普通查詢也要立即執行,可以在查詢語句后調用ToList()或ToArray()方法。
這段linq語句是什么意思
這是在select出來的數據基礎上新生成一個對象 ,這個只有一個屬性Name1,Name1是根據*_type == 1的條件來生成的 ? : 是問號表達式,a?b:c 是說如果a為真取b的值,否則取c的值. 它是自右向左結合的, 比如說a?b:c?d:e相當于a?b:(c?d:e)結合你的問題, 就是當*_type=1時取*y_*OrDefault(cm => *_ID == org_id).Name1,否則如果*_type=2取*_*OrDefault(om => *_ID == org_id).Name1 否則如果*_type=3取*ment_*OrDefault(dm => *_ID == org_id).Name1 否則取""。
這個linq語句是什么意思
var value = from user in user_*_Role_Master
where
*_*y_Org_ID == company_org_id
select new
{
URID = *,
User_Info_ID = *_Info_ID,
Org_ID = *_ID,
Position_ID = *on_ID,
Last_name1 = *_*_name1,
Start_date = *_date,
End_date = *_date
}
相當于
select *,*_Info_ID,*_ID,*on_ID,*_name1,*_date,*_date
from .User_Role_Master as t0
join User_Master as t1 on * =*
where *y_Org_ID == company_org_id
因為value是var類型,
所以select new {。}你可以理解為生成了一個新的實體,而URID,User_Info_ID等字段則是該實體的屬性。
但是這個實體類是無法調用的,因為你不知道它的名稱。
個人感覺這樣寫不好,如果定義為var類型,不利于操作查詢所得到的集合
如果一定要多表查詢,可以自己定義一個實體類,將不同表里的字段提出來寫成一個實體類。
例如
public class MyClass
{
public int? URID {get;set;}
public int? User_Info_ID {get;set;}
public int? Org_ID {get;set;}
public int? Position_ID {get;set;}
public string Last_name1 {get;set;}
public DateTime? Start_date {get;set;}
public DateTime? End_date {get;set;}
}
public List<MyClass> FindUser_Role_MasterWithTbl(int company_org_id)
{
IList<MyClass> value = (from user in user_*_Role_Master
where
*_*y_Org_ID == company_org_id
select new MyClass
{
URID = *,
User_Info_ID = *_Info_ID,
Org_ID = *_ID,
Position_ID = *on_ID,
Last_name1 = *_*_name1,
Start_date = *_date,
End_date = *_date
}).ToList<MyClass>();
return value;
}
SQL語句轉化為Linq語句
分少點!回頭幫我的團隊打工償還吧!O(∩_∩)O哈哈~-------------我的表是Table_1s和Table_2slinq 查詢如下:from t in Table_1s join f in Table_2s on t.B equals * into FD from f in *(b=>*e=="B").DefaultIfEmpty() join s in Table_2s on t.C equals * into FDS from s in *(b=>*e=="C").DefaultIfEmpty()select new{ A=t.A, B=*, C=*}---對應sql如下:-- Region ParametersDECLARE @p0 NVarChar(1) SET @p0 = 'B'DECLARE @p1 NVarChar(1) SET @p1 = 'C'-- EndRegionSELECT [t0].[A], [t1].[value] AS [B], [t2].[value] AS [C]FROM [Table_1] AS [t0]LEFT OUTER JOIN [Table_2] AS [t1] ON ([t1].[RowName] = @p0) AND ([t0].[B] = [t1].[key])LEFT OUTER JOIN [Table_2] AS [t2] ON ([t2].[RowName] = @p1) AND ([t0].[C] = [t2].[key])---應該滿足你的要求!。
求Linq 語句,[面試題],該如何處理
這個數據源,用下面的sql 語句,可以轉成如下結果://好象有點復雜了。
SQL codeselect count([t0].id),avg([t0].Fsalary),[t0].年齡段 from ( select id, ( case when (Fage=20 and Fage=30 and Fage=40 )then '>40' else 'error' end ) AS '年齡段', FAge , FName, fsalary from T_Employee ) as [t0] group by [t0].年齡段 [人數] [平均工資] [年齡段]
但是,要求用 Linq 來寫, 誰能給出 Linq 語句,
------解決方案--------------------------------------------------------C# code var q = (from a in list group a by new { range = * = 20 && * 30") } into g select new { key = *, count = *(), salary = *e(b=>*) }); foreach (var item in q) { *(*+" "+*+" "+*+"
"); }