Linq学习整理语法

函数:

selectMany
where
orderBy
thenBy
distinct
groupBy
groupJoin
join
except
union
intersect
take/takeWhile/takeUntil
skip/skipWhile/skipUntil

例:

var evens = list.where(function (x) { return x % 2 == 0; }).toArray();
var odds = list.where("x => x % 2 == 1").toArray();
Ordering a list of people:
var people = [{first: "Jason", last: "Bourne"},
    {first: "Gandalf", last: "The Grey"},
    {first: "John", last: "Smith"},
    {first: "Albert", last: "Smith"}];
    
var results = $linq(people)
    .orderBy(function (x) { return x.last; })
    .thenBy("x => x.first")
    .toArray();
Using an inner join:
var users = [{username: "asmith", domain: "north_america"},
    {username: "tmcfarland", domain: "europe"},
    {username: "cdeckard", domain: "nort_america"}];
    
var groups = [{user: "ASMITH", groupName: "base_users"},
    {user: "TMCFARLAND", groupName: "admins"},
    {user: "CDECKARD", groupName: "base_users"},
    {user: "CDECKARD", groupName: "testers"}];
    
var results = $linq(users).join(groups,
    function (x) { return x.username; },    // key for 'users'
    "x => x.user",                          // key for 'groups'
    function (outer, inner)                 // function to generate results
    { 
        return "user: " + outer.username + 
            ", domain: " + outer.domain +
            ", group: " + inner.groupName;
    },
    "(x, y) => x.toLowerCase() == y.toLowerCase()");    // compare keys case-insensitively



LINQ to Object    
MethodInfo[] methods = typeof(string).GetMethods();  
var q = from t 
in methods  
where (t.Name.Length > 15)  
select t;  

LINQ to Xml
XElement xelem = XElement.Load(@"example.xml");   // 查询节点名为Item,并返回它们的PartNumber属性值的集合  
IEnumerable<string> partNos = from item in xelem.Descendants("Item")  
Select (string)item.Attribute("PartNumber"); 
foreach (string str in partNos)  
Console.WriteLine(str); 


XElement contacts =   new XElement("Contacts",   
new XElement("Name", "Ice Lee"),  
new XElement("Phone", "010-876546",  
new XAttribute("Type", "Home")),  
new XElement("Phone", "425-23456",  
new XAttribute("Type", "Work")),  
new XElement("Address",   
new XElement("Street", "ZhiXinCun"),  
new XElement("City", "Beijin")  )  );   
输出结果:   
<? Xml version="1.0" encoding="utf-8"?>  
<Contacts>   
<Name>Ice Lee</Name>   
<Phone Type="Home">010-876546</Phone>  
<Phone Type="Work">425-23456</Phone>  
<Address>   <Street>ZhiXinCun</Street>  <City>Beijing</City>  </Address>  
</Contacts>



XMLファイルのフィールド取得---元素轴方法
XElement root = XElement.Load("categorizedBooks.xml");  
XElement dotNetCategory = root.Element("category"); 
Console.WriteLine(dotNetCategory);
XElement root = XElement.Load("categorizedBooks.xml");  
XElement dotNetCategory = root.Element("category");
XAttribute name = dotNetCategory.Attribute("name");
Console.WriteLine((string) name); 
XElement books = dotNetCategory.Element("books");   
IEnumerable<XElement> bookElements = books.Elements("book");   
Console.WriteLine((string) dotNetcategory); 
foreach(XElement bookElement in bookElements)  
{  Console.WriteLine(" - " + (string)bookElement);  }

XML文件

<category name="Technical">
<category name=".NET">
<books>
<book>
CLR via C#</book>
<book>
Essential .NET</book>
</books>
</category>
<category name="Design">
<books>
<book>
Refactoring</book>
<book>
Domain Driven Design</book>
<book>
Patterns of Enterprise Application Architecture</book>
</books>
</category>
<books>
<book>
Extreme Programming Explained</book>
<book>
Pragmatic Unit Testing with C#</book>
<book>
Head First Design Patterns</book>
</books>
</category>



XElement xelem = XElement.Load(@"example.xml"); 
var partNos = from item in xelem.Descendants("Item") 
where item.Attribute("PartNumber").Value == "872-AA" 
select item; 
foreach (XElement node in partNos) 
node.Value = "Hello"; 
Console.WriteLine(node.Value); 
A. 查找目标树节点的父节点      
B. 将先前的节点的孩子转移到新节点      
C. 将父节点的子节点替换(如果需要还要用算法重新排序树)。
XElement xel = XElement.Load(@"example.xml"); 
var itemNos = from item in xel.Descendants("Item") 
select item; 
int n = itemNos.Count(); 
for (int i=0; i<n; i++) { 
// 新创建节点
XElement nEl = new XElement("Element"); 
// 转移孩子节点
nEl.Add(itemNos.ElementAt(0).Elements()); 
// 替换
itemNos.ElementAt(0).ReplaceWith(nEl); 
Console.Write(xel); 
削除
XElement xelem = XElement.Load(@"example.xml");  
var partNos = from item in xelem.Descendants("Item")   
where item.Attributes("PartNumber").Single().Value == "872-AA"  
select item;   
partNos.Remove();  
Console.Write(xelem); 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值