日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Advanced Linq - Dynamic Linq query library: Add support for 'Contains' extension

發布時間:2025/3/19 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Advanced Linq - Dynamic Linq query library: Add support for 'Contains' extension 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接: http://blog.walteralmeida.com/2010/05/advanced-linq-dynamic-linq-library-add-support-for-contains-extension-.html

?

This post explains how to extend the Dynamic Linq library to support the "Contains" extension method.?This post also can serve as a base for further extension of the Dynamic Linq Library and adding support to more extension methods.

Linq is an amazing programming model, brought to life by the Microsoft.NET Framework 3.5, that introduces data queries as a first-class concept into any Microsoft programming langage.

Linq allows you to build strongly type queries to access data in any source for which a Linq support library is available, including MS SQL, data objects (through IEnumerable and IQueryable), Entity Framework and more.

Even though the regular, strongly typed approach to building queries is definitively recommended, in some cases arises the need for dynamically building queries. For this purpose Microsoft freely provides an open source dynamic Linq query library. Cases for using dynamic queries could be for example: you might want to provide business intelligence UI within your application that allows an end-user business analyst to use drop-downs to build and express their own custom queries/views on top of data. Another example is the creation of RESTfull service interfaces that accept query string parameters that could be converted to dynamic linq queries.

Please refer the the Scott Guthrie post for more information on the Dynamic Linq Query library:

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx?

I found this library very usefull and used it in several scenarios. However this library does not support all of the Linq extensions. I had the need for building dynamic queries with the "Contains" extension which was not supported by the Microsoft Dynamic Linq library.?This post explains how to extend the Dynamic Linq library to support the "Contains" extension method.?

Sample Code

Here is the sample application we use to illustrate our tallks (You can download the source code?here) :?

We define a class "Contact". For the purpose of demonstration, we do not connect to a data source, but have a static "GetContactList" method that return a collection of users.?

1 public class Contact 2 { 3 public string FirstName { get; set; } 4 public string LastName { get; set; } 5 public DateTime BirthDate { get; set; } 6 public string Country { get; set; } 7 8 public Contact(string firstName, string lastName, DateTime birthDate, string country) 9 { 10   FirstName = firstName; 11   LastName = lastName; 12   BirthDate = birthDate; 13   Country = country; 14 } 15 16 public override string ToString() 17 { 18 return string.Concat(FirstName, " ", LastName, " ", BirthDate, " ",Country); 19 } 20 21 public static List?contact? GetContactsList() 22 { 23 var result = new List?contact?(); 24 25 result.Add(new Contact("Zephr", "Austin", new DateTime(1967, 11, 07), "Afghan")); 26 result.Add(new Contact("Odette", "Bean", new DateTime(1993, 05, 18), "Uzbekistan")); 27 result.Add(new Contact("Maggie", "Mcson", new DateTime(2001, 06, 12),"Kiribati")); 28 ... 29 ... 30 31 return result; 32 } 33 }

??

The Case?– Use of the Dynamic Linq Library and missing support for the “Contains”? extension method

Let's take a first example of simple Linq query to get the contacts located in Austria. Using regular Linq, you write the following query:

var query = from c in Contact.GetContactsList() where c.Country == "Austria" select c;

Or the equivalent query, using extension methods and lambda?

var query = Contact.GetContactsList().Where(c => c.Country == "Austria");

We will keep the second syntax as the dynamic linq library does not support the first syntax.

We can then iterate the query result and retrieve relevant contact information:

foreach (var contact in query) {Console.WriteLine(contact.ToString()); }

?Doing the same query using dynamic Linq:?

query = Contact.GetContactsList().AsQueryable().Where("Country == @0", "Austria");

Please not the extra "AsQueryable()" call because the dynamic extension applies on collections implementing IQueryable. Then Iterating the results is just the same as with regular Linq.

The Dynamic Linq library also supports more complex queries. For instance here is the Dynamic Linq query to retrieve all contacts in Austria, born in 1957:?

query = Contact.GetContactsList().AsQueryable().Where("Country == @0 && BirthDate.Year == 1957", "Austria");

?

Everythings seems to magically work so far. Let’s try now a more complex scenario: when want to retrieve the list of contacts located in given list of countries. Let’s say : all contacts located in either Austria or Poland. For such a purpose, a common solution is to use the “Contains” extension method:

query = Contact.GetContactsList().Where(c => new List<string>>() { "Austria","Poland" }.Contains(c.Country));

?

In Linq to SQL, the result pseudo SQL projection would be:

select * from contact c where c.Country in (‘Austria’, ‘Poland’);

?

Let’s try to write the same query in Dynamic Linq (using parameters to pass the input list of countries):

query = Contact.GetContactsList().AsQueryable().Where("@0.Contains(Country)", newList<string>() { "Austria", "Poland" });

?

This result at runtime to the following exception:?“No applicable aggregate method 'Contains' exists”,

Emphasizing the fact the Dynamic Linq library does not have support for the “Contains” extension method. The following section will explains how to add support for “Contains”.

?

Add support for the “Contains” extension method

Analyzing the “Dynamic.cs” class that adds support for Dynamic Linq, you’ll find the definition of the?IEnumerableSignatures?interface. This interface lists all?IEnumerable?extension methods that are supported by the Dynamic Linq library. You should add the “Contains” extension method signature:

interface IEnumerableSignatures {void Contains(object selector);void Where(bool predicate);void Any();void Any(bool predicate);void All(bool predicate);void Count();void Count(bool predicate);void Min(object selector);void Max(object selector);void Sum(int selector);void Sum(int? selector);void Sum(long selector);void Sum(long? selector);void Sum(float selector);void Sum(float? selector);void Sum(double selector);void Sum(double? selector);void Sum(decimal selector);void Sum(decimal? selector);void Average(int selector);void Average(int? selector);void Average(long selector);void Average(long? selector);void Average(float selector);void Average(float? selector);void Average(double selector);void Average(double? selector);void Average(decimal selector);void Average(decimal? selector); }

?

The?IEnumerableSignatures?interface is then used in the following method:

?

Expression ParseAggregate(Expression instance, Type elementType, string methodName, int errorPos) {ParameterExpression outerIt = it;ParameterExpression innerIt = Expression.Parameter(elementType, "");it = innerIt;Expression[] args = ParseArgumentList();it = outerIt;MethodBase signature;if (FindMethod(typeof(IEnumerableSignatures), methodName, false, args, out signature) != 1)throw ParseError(errorPos, Res.NoApplicableAggregate, methodName);Type[] typeArgs;if (signature.Name == "Min" || signature.Name == "Max") {typeArgs = new Type[] { elementType, args[0].Type };}else {typeArgs = new Type[] { elementType };}if (args.Length == 0) {args = new Expression[] { instance };}else {args = new Expression[] { instance, Expression.Lambda(args[0], innerIt) };}return Expression.Call(typeof(Enumerable), signature.Name, typeArgs, args); }

?

There 2 changes to perform to that method.

Fist, the arguments are constructed using the following line:

args = new Expression[] { instance, Expression.Lambda(args[0], innerIt) };

?

this has to be changed specifically for the Contains methods to the following:

args = new Expression[] { instance, args[0] };

Reason is that the signature of the Contains extension methods differs from the others. Let’s take an example: here are the definitions for the “Any” and “Contains” extension methods of the IEnumerable<> interface (classe “System.Linq.Enumerable”):

Any<TSource>(this.System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,bool>); Contains<TSource>(this.System.Collections.Generic.IEnumerable<TSource>, TSource);

You can see that the parameter of the “Any” extension method is a lambda expression taking “TSource” (type of innerIt in our Dynamic Linq library) as entry and returning ”bool” .This explains the transformation Expression.Lambda(args[0], innerIt). In the case of the “Contains” extension method, type of the argument is not a Lambda but just “TSource”.

Next change is the following: the Dynamic Linq library transforms the input string to a proper Linq query by parsing the input string. It internally keeps a context to the current collection being processed. This is the use of the field “innerIt”. When processing our list of “Contacts”, the innerIt represent a “Contact”. However, when processing the “Contains” method, the context changes from the list of “Contacts” to the list being the source for the “Contains” method; in our case: the list of string representing country name. Therefore the parsing of the following dynamic Linq expression:

query = Contact.GetContactsList().AsQueryable().Where("@0.Contains(Country)", newList<String>() { "Austria", "Poland" });

will not work: the parser will try to find a property “Country” on type String, where we meant a property “Country” on “Contact”.

In fact the previous query is equivalent to:

query = Contact.GetContactsList().AsQueryable().Where("@0.Contains(it.Country)", newList<String>() { "Austria", "Poland" });

Where “it” is the keyword defined in the Dynamic Linq library to represent the current element. It represents here the current item in the list {“Austria”, “Poland”}. What we would like here is the following syntax:

query = Contact.GetContactsList().AsQueryable().Where("@0.Contains(outerIt.Country)", newList<String>() { "Austria", "Poland" });

where “outerIt” represents the englobing context: the list of “Contacts”.? For this we should define an “outerIt” keyword, and use it in the “ParseAggregate” method. The new implementation of the “ParseAggregate” methods is now:

Expression ParseAggregate(Expression instance, Type elementType, string methodName, int errorPos) {outerIt = it;ParameterExpression innerIt = Expression.Parameter(elementType, "");it = innerIt;Expression[] args = ParseArgumentList();it = outerIt;MethodBase signature;if (FindMethod(typeof(IEnumerableSignatures), methodName, false, args, out signature) != 1)throw ParseError(errorPos, Res.NoApplicableAggregate, methodName);Type[] typeArgs;if (signature.Name == "Min" || signature.Name == "Max") {typeArgs = new Type[] { elementType, args[0].Type };}else{typeArgs = new Type[] { elementType };}if (args.Length == 0) {args = new Expression[] { instance };}else {if (signature.Name == "Contains")args = new Expression[] { instance, args[0] };elseargs = new Expression[] { instance, Expression.Lambda(args[0], innerIt) };}return Expression.Call(typeof(Enumerable), signature.Name, typeArgs, args); }

?

By the way: it is important to mention that since “it” and “outerIt” are defined keywords, they become reserved keywords and should not be used as properties or method definitions in your data classes, if you intend to access them as part of dynamic queries. It would result in a runtime error. Since the common used code standards are to use only capitalized names for public properties and methods, it should be alright in most of the cases.

Remains the use of the “outerIt” keyword. Definition of the keyword and class level storage of its current value:

static readonly string keywordOuterIt = "outerIt"; ParameterExpression outerIt;

?

Taking into account the new keyword in ??ParseIdentifier??

Expression ParseIdentifier() {ValidateToken(TokenId.Identifier);object value;if (keywords.TryGetValue(token.text, out value)) {if (value is Type) return ParseTypeAccess((Type)value);if (value == (object)keywordIt) return ParseIt();if (value == (object)keywordOuterIt) return ParseOuterIt();if (value == (object)keywordIif) return ParseIif();if (value == (object)keywordNew) return ParseNew();NextToken();return (Expression)value;}......

?

And new method “ParseOuterIt”:

?

Expression ParseOuterIt() {if (outerIt == null)throw ParseError(Res.NoItInScope);NextToken();return outerIt; }

?

Conclusion

?

That’s it?! The Dynamic Linq library is now supporting the ??Contains?? extension method

You’ll find the modified “Dynamic.cs” class as part of the code sample. You can now write and successfully run queries likes the following:

query = Contact.GetContactsList().AsQueryable().Where("@0.Contains(outerIt.Country)", newList<String>() { "Austria", "Poland" });

or:

query = Contact.GetContactsList().AsQueryable().Where("@0.Contains(outerIt.Country) && it.BirthDate.Year > @1", new List<string>() { "Austria", "Poland" }, 1955);

This post can be used to further extend the Dynamic Linq library and add support for more extension methods.

Hope this can help other who faced the same limitation and help move forward the Dynamic Linq Library!

You can download the source code for the sample project?here. or here

轉載于:https://www.cnblogs.com/oxsir/p/advanced-linq-dynamic-linq-library-add-support-for-contains-extension.html

總結

以上是生活随笔為你收集整理的Advanced Linq - Dynamic Linq query library: Add support for 'Contains' extension的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

91爱爱中文字幕 | 国产小视频精品 | 国产一线二线三线在线观看 | 一区二区三区视频网站 | 97精品国产91久久久久久 | 超碰在线免费福利 | 欧美日韩综合在线 | 天天射狠狠干 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 黄色免费视频在线观看 | 在线观看中文字幕亚洲 | 久久草精品 | 婷婷五月色综合 | 国产成人一区二区三区在线观看 | 97人人超碰在线 | 免费在线视频一区二区 | 国产91精品高清一区二区三区 | 亚洲日韩中文字幕在线播放 | 国产高清在线免费视频 | 探花视频免费观看高清视频 | 国产一级大片在线观看 | 一区二区三区免费看 | 亚洲一区日韩 | 亚洲成人频道 | 久久99精品国产99久久 | 成人av在线影视 | 1024手机在线看 | 96在线| 久久久久国产精品免费网站 | 国产亚洲精品美女 | 91精品麻豆 | 天天爽天天爽天天爽 | 91喷水| 久久人人爽爽人人爽人人片av | 在线免费观看国产精品 | 日韩欧美高清一区二区三区 | 免费中文字幕 | 中文超碰字幕 | 不卡的av片| 久久久免费看片 | 97av视频在线观看 | 久久精品一 | 成人综合婷婷国产精品久久免费 | 欧美日韩99| 亚洲综合色视频在线观看 | 亚洲久在线 | 久久激情网站 | av一级片在线观看 | 国产精品自在线 | 亚洲国产婷婷 | 婷婷伊人五月天 | 中文字幕制服丝袜av久久 | 国产一区二区三区免费视频 | 国产一区二区综合 | 国产亚洲小视频 | 69人人| 国产一级电影在线 | 国产人成一区二区三区影院 | 婷婷六月综合网 | 一本到视频在线观看 | 美女免费视频观看网站 | 91成人免费在线视频 | 精品久久久久久综合日本 | 射九九| 日韩一区二区免费在线观看 | 色香蕉在线视频 | 久久精品人人做人人综合老师 | 深夜福利视频一区二区 | 九九视频这里只有精品 | 亚洲国产字幕 | 中文字幕在线观 | 外国av网 | www.天堂av | 天天玩天天干天天操 | 奇米影视在线99精品 | 久久影院午夜论 | 国产黄av | 国产精品久久久久久久久久久久午 | 五月婷婷综合色拍 | 视频二区在线 | 日韩女同一区二区三区在线观看 | 色五月色开心色婷婷色丁香 | 色偷偷男人的天堂av | 99久久99久久精品 | 韩国av一区二区 | 成人一级片在线观看 | 天天玩天天干天天操 | 亚洲精品啊啊啊 | 亚洲精品乱码久久久久v最新版 | 亚洲免费av网站 | 日韩精品免费一线在线观看 | 久久99在线| 久久精品美女视频网站 | 国产精品区一区 | 激情视频一区 | 中国一 片免费观看 | 日韩在线观看第一页 | 91在线麻豆| 日韩一区二区三区在线观看 | 日韩av电影免费在线观看 | 国产亚洲资源 | 国产精久久久 | 免费午夜视频在线观看 | av亚洲产国偷v产偷v自拍小说 | 国产福利一区二区三区视频 | 又黄又爽的免费高潮视频 | 人人干狠狠干 | 日韩最新av | 久久综合射| 97人人模人人爽人人喊网 | 日本99干网 | 女女av在线 | 久草网免费| 日韩电影一区二区三区在线观看 | 国产第一页精品 | 91热在线 | 91精品国产成人 | 国产精品不卡在线观看 | 中文在线字幕免费观 | 888av| 国产成人久久av免费高清密臂 | 国产精品久久久久久久av大片 | 青青河边草观看完整版高清 | 日韩在线视频在线观看 | 国产视频久久 | 免费男女羞羞的视频网站中文字幕 | 久草在线视频国产 | 久久国产精品久久久 | 国产一区二区久久久久 | 国产 欧美 在线 | 成人综合免费 | 8090yy亚洲精品久久 | 亚洲狠狠干 | 亚洲人视频在线 | 久久99在线视频 | 欧美精品一区在线发布 | 欧美精品黑人性xxxx | 国产精品欧美久久久久久 | 久草国产在线 | 欧美性一级观看 | 欧日韩在线视频 | 中文字幕中文字幕在线中文字幕三区 | 最近中文字幕高清字幕在线视频 | 国产无吗一区二区三区在线欢 | av色一区| 日韩欧美视频免费在线观看 | 国产资源在线观看 | 久久久久久久久黄色 | 99爱这里只有精品 | 天天狠狠干 | zzijzzij亚洲成熟少妇 | 香蕉视频久久 | 国产高清视频色在线www | 国产精品自产拍在线观看中文 | 91亚洲精 | 国产九九热视频 | 久久www免费视频 | 色综合婷婷久久 | 99se视频在线观看 | 欧美日韩免费看 | 911久久香蕉国产线看观看 | 久久久久久久影院 | 99视频在线看 | 毛片一级免费一级 | 国产精品久久99综合免费观看尤物 | 国产精品视频你懂的 | 成人av高清 | 欧美视频18| 香蕉视频久久久 | 欧美一区免费观看 | 国产精品久久久久四虎 | 丁香六月五月婷婷 | 国产 视频 高清 免费 | 成人黄大片 | 香蕉影视在线观看 | 日日干天天爽 | 91av欧美| 激情五月色播五月 | 天堂网av在线 | 99精品久久只有精品 | 国产福利在线免费观看 | 欧美成人精品三级在线观看播放 | 国产高清视频在线 | 日韩成人xxxx | 亚洲片在线资源 | 国产精品日韩欧美一区二区 | av888.com| 粉嫩av一区二区三区四区五区 | 久久精品牌麻豆国产大山 | 超碰人人在线观看 | 精品视频久久 | 色婷婷激情 | av导航福利| 亚洲激情一区二区三区 | 亚洲免费一级电影 | 免费久久精品视频 | 808电影免费观看三年 | 久热电影 | 三级黄色在线观看 | 久久av观看 | 欧美乱熟臀69xxxxxx | 69国产盗摄一区二区三区五区 | 国产日韩视频在线 | 美女网站视频免费黄 | 国产日本亚洲 | 国产 色 | 免费观看全黄做爰大片国产 | 欧美一区日韩一区 | 国产精品久久一区二区三区, | 天天色天天色天天色 | 99精品在线免费在线观看 | 国产精品免费av | 日日干夜夜骑 | 婷婷色综合网 | 亚洲第一av在线 | 天天摸日日摸人人看 | 在线91精品| 中文区中文字幕免费看 | 国产精品免费不 | 五月天色综合 | 激情丁香 | 91人人揉日日捏人人看 | 四虎永久网站 | 麻豆一二 | 国产r级在线观看 | 日韩69av | 999久久久欧美日韩黑人 | 久久九九久久九九 | 国产剧情在线一区 | 狠狠色香婷婷久久亚洲精品 | 成人在线视频观看 | 岛国av在线免费 | 91精品国产九九九久久久亚洲 | 国产亚洲婷婷 | 欧美一进一出抽搐大尺度视频 | 手机av网站 | 精品在线观看一区二区 | 欧美一区二区三区在线视频观看 | 色av男人的天堂免费在线 | 女人18片 | 国内精品久久久久久久久久清纯 | 日韩成年视频 | 国产成人一二片 | 精品国产一区二区三区久久久久久 | 久久精品久久精品久久精品 | 久久激情电影 | 久草在线视频新 | 国产精品综合久久久 | 亚洲精品动漫久久久久 | 亚洲国产人午在线一二区 | 国产亚洲午夜高清国产拍精品 | 在线 国产 日韩 | 日韩夜夜爽 | 不卡在线一区 | 精品久久美女 | 精品国产一区在线观看 | www狠狠操| 中文字幕一区二区三区精华液 | 人人干人人艹 | 黄色网在线免费观看 | 最近免费中文字幕大全高清10 | 国产精品 日韩精品 | 日韩精品三区四区 | 久久国产一二区 | 久久99国产精品视频 | 岛国一区在线 | 久久五月婷婷丁香 | 九九影视理伦片 | 中文字幕日韩伦理 | 精品电影一区二区 | 日韩国产欧美在线视频 | 波多野结衣视频一区二区三区 | 久久九九国产视频 | 在线va网站| 亚洲国产网站 | 在线观看中文字幕dvd播放 | 999久久国精品免费观看网站 | 日韩在线精品视频 | 欧美精彩视频在线观看 | 国产精品国产三级国产不产一地 | 在线亚洲人成电影网站色www | 激情久久一区二区三区 | www.亚洲精品视频 | 高清不卡一区二区在线 | 超碰在线97免费 | 福利片免费看 | 欧美日韩免费在线视频 | 最近高清中文在线字幕在线观看 | 黄色一级大片在线免费看产 | 91精品一区国产高清在线gif | www.888av| 九九精品久久 | 免费在线观看av电影 | 人人爽人人爽人人片av | 美女视频黄是免费的 | 久久香蕉国产精品麻豆粉嫩av | 永久免费精品视频网站 | av福利网址导航 | 97人人爽人人 | av在线免费播放网站 | 天天色天天干天天 | 手机av在线不卡 | 亚洲精品乱码久久久久v最新版 | 国产精品夜夜夜一区二区三区尤 | 亚洲成人第一区 | 丰满少妇一级片 | 久久亚洲综合国产精品99麻豆的功能介绍 | 99精品视频观看 | 色婷婷狠狠18 | 91在线精品视频 | 国产成人精品综合久久久 | 日韩高清在线观看 | 激情黄色一级片 | 久久免费视频播放 | 色爱区综合激月婷婷 | 在线观看亚洲视频 | 色黄久久久久久 | 久久国语 | 久av电影| 午夜视频在线观看一区二区三区 | 日韩免费小视频 | 韩国一区二区三区在线观看 | 91麻豆国产 | 人人玩人人添人人澡超碰 | 中文字幕精品一区二区精品 | 久久久久成人精品亚洲国产 | 99久久精品免费看国产一区二区三区 | 日本久久久久久科技有限公司 | 久久久久久久久久久久久影院 | 色婷婷电影网 | 成人黄色av网站 | 国产成人精品久久 | 久久人人爽人人爽人人 | 日韩毛片久久久 | 久久成电影 | 国产91av视频在线观看 | 久久精品日韩 | 视频国产精品 | 丰满少妇麻豆av | 8090yy亚洲精品久久 | 久久精品香蕉 | 在线观看成人国产 | 久久开心激情 | 日韩激情影院 | 四虎影视8848dvd| 亚洲免费在线播放视频 | 97国产一区| 91人网站| 处女av在线 | 中文字幕成人网 | 国产精品入口传媒 | 欧美日韩高清不卡 | 亚洲精品播放 | 97香蕉超级碰碰久久免费软件 | 在线视频免费观看 | 日韩精品免费 | 97福利视频 | 日韩色高清 | 五月天久久久久久 | 中文字幕在线观看的网站 | 欧美性高跟鞋xxxxhd | 久久电影国产免费久久电影 | 天天拍天天色 | 国产精品1024 | 日韩精品一区在线播放 | 8x成人免费视频 | 欧美久久久久久久 | 日韩av免费在线看 | 综合激情婷婷 | 国产精品久久久久久一区二区三区 | 国产一区二区三区高清播放 | 久久久久久久免费看 | 国产热re99久久6国产精品 | 狠狠色丁香婷婷综合久久片 | 成人国产一区 | 五月天国产精品 | 亚洲精品美女久久久 | 亚洲精品综合欧美二区变态 | 免费h精品视频在线播放 | 久久综合偷偷噜噜噜色 | 久久久国产一区二区三区 | 玖玖爱在线观看 | 欧美99热| 麻豆一级视频 | 欧美日韩亚洲精品在线 | 亚洲成人黄色在线 | 精品一二区 | 在线视频观看你懂的 | 久久精精品视频 | av天天干 | 91人人视频在线观看 | 国产精品18久久久久久久久 | 欧美一级电影在线观看 | 日韩视频免费观看高清 | 超碰97中文 | av免费在线网站 | 中文字幕免费高清在线观看 | 在线 成人 | 伊人资源站 | av电影免费 | 成人av免费在线看 | 久久不卡国产精品一区二区 | 99久久久成人国产精品 | 久久久久久久久久免费视频 | 在线观看亚洲精品 | 五月天中文字幕mv在线 | 在线观看的a站 | 免费看在线看www777 | 亚洲va天堂va欧美ⅴa在线 | 97人人爽 | 97狠狠操 | 国产精品久久久久久久久久久久久久 | 欧美肥妇free| 91亚洲国产成人久久精品网站 | 免费在线视频一区二区 | 亚洲乱码久久久 | 久久久高清一区二区三区 | 国际精品网 | 国产淫片免费看 | 日本婷婷色 | www.久久91 | 久久人人爽人人 | 一级片在线 | 国产福利一区在线观看 | 91九色视频网站 | 日本中文字幕网址 | 欧美99热 | 国内外成人免费在线视频 | 精品国产_亚洲人成在线 | 久久大片| 国产日韩精品一区二区三区在线 | 天天草av | 99国产高清 | 免费成人在线观看 | 东方av在| 色久综合| 日韩欧美国产精品 | 国产尤物视频在线 | 国产玖玖视频 | 99久久激情 | 日韩乱色精品一区二区 | 日韩高清免费无专码区 | 亚洲aⅴ在线观看 | 婷婷综合在线 | 中文字幕一区二区三区久久 | 亚洲精品免费在线视频 | 99久久久久成人国产免费 | 国产xxxxx在线观看 | 精品a视频 | 99精品一区二区三区 | 色综合久久精品 | 天天操操操操操操 | 国产最新在线观看 | 午夜久久福利视频 | 成人午夜精品福利免费 | 最新真实国产在线视频 | 国产欧美综合在线观看 | 不卡视频在线 | 久久麻豆视频 | 久久午夜网 | 蜜臀久久99静品久久久久久 | 日本中文字幕影院 | 人人爽人人射 | 九九精品在线观看 | 天天天色综合a | 97视频免费看 | 免费av的网站 | 中文字幕第 | 菠萝菠萝在线精品视频 | 在线免费观看麻豆视频 | 夜夜操网站 | 国产成人在线免费观看 | 国产97视频在线 | 成人在线视频免费 | 久久精品综合一区 | 天天操天天操天天干 | 五月开心色 | 超碰人人在 | 91精品久久久久久久91蜜桃 | 日韩亚洲在线 | 丁香五香天综合情 | 伊色综合久久之综合久久 | 成人网在线免费视频 | 亚洲综合色视频 | 亚洲免费精彩视频 | 国产专区第一页 | 日韩av二区 | 草 免费视频 | 国产精品视频在线观看 | 亚洲精品免费看 | 四虎在线免费观看视频 | 99精品免费久久久久久日本 | 日韩成人免费在线观看 | 四虎亚洲精品 | 国产精品午夜在线 | 特级西西www44高清大胆图片 | 欧美成年人在线观看 | 国产麻豆精品传媒av国产下载 | 国产色黄网站 | 欧美在线观看视频一区二区三区 | 日韩成人xxxx| 97在线观看免费视频 | 国产黄在线播放 | 欧美精品一区在线 | 免费午夜在线视频 | 久久国产精品视频观看 | 97人人爽| 久久精品美女视频 | 亚洲国产人午在线一二区 | 免费观看9x视频网站在线观看 | 欧美精品成人在线 | 伊人永久| 成人国产精品入口 | 免费a v在线| av资源在线看 | 草久久久 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 成人在线一区二区 | 在线国产中文 | 在线综合 亚洲 欧美在线视频 | 国产一区黄色 | 成人在线视频免费看 | 91在线永久 | 国产黄色视| 午夜精品久久久久久99热明星 | 91大神在线观看视频 | 六月色婷婷 | 毛片永久新网址首页 | 国产免费久久久久 | 日韩精品第1页 | 国产视频在| 日韩欧美电影网 | 亚洲成人av在线播放 | 干亚洲少妇| 精品视频123区在线观看 | www.狠狠插.com | 日韩在线观看a | 欧美日韩另类在线观看 | 激情动态 | 国产精品视频你懂的 | 五月婷婷色 | 超碰在线资源 | 91精品在线视频 | 中文字幕电影高清在线观看 | 粉嫩av一区二区三区四区 | 麻豆视频一区 | 超碰99在线| 美女视频是黄的免费观看 | 欧美一区视频 | 日韩免费三区 | 免费a v网站 | 欧美污污视频 | 亚洲精品综合在线 | 日日夜夜天天操 | 日本久久精品视频 | 超碰免费av| 国产视频黄 | 日日天天av | 日本精品久久久久中文字幕 | 成人a免费视频 | 91精品国产91热久久久做人人 | 亚洲精品国偷拍自产在线观看蜜桃 | 六月激情丁香 | 亚洲免费黄色 | 四虎在线观看视频 | 久久美女高清视频 | 日韩午夜一级片 | 伊人婷婷久久 | 91精品伦理 | 日韩一区正在播放 | 天天操月月操 | 国产香蕉av | 色婷婷av一区 | 日韩二三区 | 免费高清男女打扑克视频 | 国产日韩欧美在线看 | 亚洲国产精品影院 | 99热99re6国产在线播放 | 色噜噜色噜噜 | 色综合激情网 | 久久免费电影 | av免费高清观看 | 亚洲第一区精品 | 狠狠色狠狠色综合日日小说 | 一级黄毛片 | av一本久道久久波多野结衣 | 国产精品第一页在线 | 亚洲国产欧美一区二区三区丁香婷 | 91视频首页 | 日韩欧美国产免费播放 | 亚洲精品电影在线 | a视频在线观看免费 | 香蕉精品视频在线观看 | 超碰在线中文字幕 | 久久综合电影 | 日本久久电影网 | 制服丝袜欧美 | 91亚洲网| 最近2019好看的中文字幕免费 | 美女视频久久久 | 色婷婷视频在线观看 | 天天操天天操天天爽 | 国产精品精品久久久久久 | 国产精品久久久久久婷婷天堂 | 91精品1区| 日韩欧美视频 | 天天鲁一鲁摸一摸爽一爽 | 亚洲人成网站精品片在线观看 | 69av视频在线 | 亚洲成人欧美 | 亚洲国产精品成人女人久久 | 国产精品高清免费在线观看 | 美女视频免费精品 | 久久免费a | 色多多视频在线观看 | 香蕉在线视频播放网站 | 天天爽网站 | 日韩av免费观看网站 | 在线国产中文字幕 | 二区三区在线 | 久久av网址 | 亚洲人成在线电影 | 91麻豆精品国产91久久久无限制版 | 99视频一区二区 | 免费观看高清 | 国产最新视频在线观看 | 国产精品久久毛片 | 久久er99热精品一区二区三区 | 五月婷婷在线视频观看 | 亚洲精品高清一区二区三区四区 | 干干夜夜 | 国产一级片在线播放 | 日韩欧美在线综合网 | 欧美日韩啪啪 | 国产成人精品一区二区三区福利 | 精品久久毛片 | 久久字幕 | 日本99久久| 欧美韩日视频 | 亚洲91在线 | 国产精品久久二区 | 久久久久久久久电影 | 国产综合福利在线 | 色综合久久久久久中文网 | 波多野结衣在线观看视频 | 欧美激情综合五月色丁香 | 9免费视频 | 首页av在线 | 久久婷婷一区二区三区 | 少妇搡bbb| 亚洲国产激情 | 999久久国精品免费观看网站 | 91在线公开视频 | 免费在线观看av网站 | 久久av网址 | 一级一片免费看 | 婷色在线 | 99视频在线精品 | 国产精品综合av一区二区国产馆 | 亚洲精品va | 日韩精品一二三 | 国产精品久久久久影院日本 | 国产中文字幕免费 | 亚洲精品国产拍在线 | bbb搡bbb爽爽爽 | 麻豆视频观看 | 四虎影视精品 | 午夜视频免费在线观看 | 福利视频一二区 | 一区二区中文字幕在线播放 | 国产精品久久久久久久7电影 | 久久综合免费 | 久久久久网站 | 久插视频 | 成人av影视在线 | 91成人国产 | 国产伦精品一区二区三区在线 | 最近最新最好看中文视频 | 国产在线2020| 中文字幕999 | a天堂最新版中文在线地址 久久99久久精品国产 | 99精品欧美一区二区蜜桃免费 | 日韩v在线91成人自拍 | 欧美日韩国产高清视频 | 黄色网www | 久久久综合香蕉尹人综合网 | 亚洲精品tv久久久久久久久久 | 久久久亚洲电影 | 国产日本在线播放 | 中文字幕国产精品 | 亚洲精品久久久蜜桃 | 一级片黄色片网站 | 丁香婷婷综合激情五月色 | 一区二区三区四区五区在线视频 | 亚洲尺码电影av久久 | 日本成人中文字幕在线观看 | 亚洲在线网址 | 99精品在线免费视频 | 亚洲va男人天堂 | 乱男乱女www7788 | 最新日韩在线观看 | 欧美日韩精品在线视频 | va视频在线观看 | 国产精品视频久久 | 欧美日韩国产一区二 | 欧美一级片播放 | 日韩av影片在线观看 | 美女国内精品自产拍在线播放 | 亚洲免费专区 | 亚洲在线视频观看 | 亚洲精品高清一区二区三区四区 | 久久久国产一区二区三区 | 国产亚州精品视频 | 色国产视频 | 久久五月婷婷综合 | 99精品一区二区三区 | 国产一区二区在线免费播放 | 999久久久国产精品 高清av免费观看 | 欧美在线观看视频 | 国产精品乱码久久久 | 日韩精品三区四区 | 免费在线观看亚洲视频 | 亚洲欧美乱综合图片区小说区 | 精品久久1 | 天天操夜夜想 | 天天躁日日 | 中文字幕色在线视频 | 亚洲精品黄色片 | 91精品一区二区三区久久久久久 | 色a资源在线 | 99久久婷婷国产精品综合 | 久久99国产综合精品免费 | 免费十分钟 | 国产午夜精品一区 | 日本午夜免费福利视频 | 亚洲精品一区二区三区高潮 | 五月天堂网 | 九九九九九九精品 | 国产人成免费视频 | 久草在线在线视频 | 亚洲精品影视 | 欧美成人性战久久 | 国产精品美女久久久网av | 免费成人在线观看视频 | 成人精品99 | 国产高清av免费在线观看 | 国产尤物在线观看 | 国产精品理论在线观看 | 国产麻豆精品传媒av国产下载 | 91精品人成在线观看 | 亚洲欧美色婷婷 | 人人干网 | 美女久久久久久久久久 | 欧美日韩一区三区 | 国产精品美女 | 成年人免费看片网站 | 免费观看版 | 亚洲欧美视频网站 | 亚洲精品啊啊啊 | 欧美日韩国产网站 | 精品视频网站 | 日本中文乱码卡一卡二新区 | 日韩天天综合 | av高清一区二区三区 | 久久久久久久久久国产精品 | 91视频免费国产 | 精品婷婷 | 中文字幕一区二区三区视频 | 国产精品久久久久久久久久 | 久久亚洲欧美日韩精品专区 | 91精品国产99久久久久久久 | 国产四虎在线 | 91精彩视频在线观看 | 在线观看91视频 | 亚洲精品视频在线观看网站 | 亚洲第一久久久 | 午夜电影av | 一级黄色片在线免费看 | 97综合在线 | 2019天天干天天色 | av网站手机在线观看 | av免费看在线| 国产黄色av网站 | 国产精品v欧美精品v日韩 | 久久精品黄色 | 天天操天天摸天天爽 | 五月婷av| 国产玖玖视频 | 亚洲播放一区 | 久久亚洲欧美日韩精品专区 | 激情网五月天 | 亚洲国产999| 国产精品资源网 | 狠狠做深爱婷婷综合一区 | 91激情| 久久99热久久99精品 | 国产一级片免费观看 | 亚洲精品自拍视频在线观看 | 色噜噜在线观看视频 | 色亚洲网 | 久久久久免费观看 | 国产精品一区二区三区在线播放 | 成年人黄色免费网站 | 国产成人av一区二区三区在线观看 | 欧美性另类 | 香蕉视频在线播放 | 久久国产精品第一页 | 五月天综合激情网 | 91精品在线视频观看 | 在线观看国产亚洲 | 久久尤物电影视频在线观看 | 国产高清精 | av色综合 | 久久99精品国产麻豆宅宅 | 欧美国产精品久久久久久免费 | 国产一级不卡视频 | www.香蕉| 96亚洲精品久久久蜜桃 | 国产成人精品在线播放 | 久草在线久草在线2 | 黄色av影院| 午夜视频免费播放 | 日日夜夜艹| 一级成人在线 | 欧美性生活小视频 | 少妇视频在线播放 | 精品免费久久久久 | 久久久视频在线 | 国产成人av电影 | 91视频久久久 | 91网站免费观看 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | av短片在线观看 | 婷婷久久一区二区三区 | 亚洲香蕉视频 | 超碰国产人人 | 中文乱码视频在线观看 | 国产香蕉97碰碰碰视频在线观看 | 久久人人爽人人片 | 久久久免费视频播放 | 视频在线观看日韩 | 99久久99热这里只有精品 | 久久丝袜视频 | 黄av免费在线观看 | 久久免费的精品国产v∧ | 丰满少妇在线观看资源站 | 亚洲色图色 | 亚洲国产精品电影在线观看 | 91最新视频在线观看 | 黄色av电影在线 | 成人av免费 | 91麻豆国产福利在线观看 | 亚洲精品视频大全 | 日韩www在线| 91免费在线 | 97在线视频免费 | 亚洲a色| 日本韩国中文字幕 | 日本中出在线观看 | 麻豆国产在线播放 | 在线免费色视频 | 91九色九色 | 国产精品久久久久久欧美 | 久久草草影视免费网 | 欧美日韩不卡一区二区三区 | 亚洲精品乱码久久久久久写真 | 中文字幕在线观看日本 | 成人a免费看 | 精品久久久久久久久亚洲 | 日本在线视频网址 | 亚洲伦理一区 | 色视频网站在线 | 欧美日韩视频一区二区三区 | 国产91av视频在线观看 | 亚洲电影第一页av | 日韩乱色精品一区二区 | 久久美女免费视频 | 成人精品福利 | 在线视频欧美日韩 | 啪啪激情网| 91亚·色| 亚洲最大的av网站 | 麻豆极品 | 高清精品视频 | 欧美国产日韩一区 | www.xxxx变态.com | 中文字字幕在线 | 国产一区二区免费 | 国产高清视频在线播放 | 国产精品专区h在线观看 | 日韩免费视频观看 | 开心丁香婷婷深爱五月 | 国产精品 中文字幕 亚洲 欧美 | 亚洲人成影院在线 | 97天天干 | 日韩免费播放 | 久久综合久久综合这里只有精品 | 久久99久久99精品免费看小说 | 久久亚洲人| 91视频成人免费 | 亚洲成人资源 | 国产美女精品久久久 | 91av电影网| 亚洲午夜精品电影 | 国产精品21区 | 91视频久久久久久 | 久久久久电影 | 黄色av大片 | 日韩理论在线观看 | 久久婷婷开心 | 最近2019好看的中文字幕免费 | 中文字幕精品在线 | 日日干夜夜草 | 免费看片成人 | 在线观看av小说 | 久久久999免费视频 日韩网站在线 | 国产亚洲精品久 | 国产99一区二区 | 久久精品国产精品亚洲精品 | 美女视频黄在线 | 一区免费观看 | 欧美a级在线免费观看 | 久久免费看 | 色99导航 | 欧美大片aaa | 青青草国产成人99久久 | 玖草影院 | www.夜夜爽 | 九九热免费视频在线观看 | 视频在线观看一区 | 黄色在线观看免费网站 | 国产亚洲在线 | 国产成人黄色av | 日本亚洲国产 | 亚洲国产精品影院 | 伊人国产在线播放 | 国产中文字幕av | 中文字幕久久网 | 国产黄色免费看 | 国产一级免费观看视频 | 日本精品视频在线播放 | 91av免费看| 91成人精品一区在线播放69 | 国产老熟 | 中文字幕免费观看全部电影 | 欧美日韩1区 | 天天干天天干天天色 | 久久99精品国产麻豆婷婷 | 亚洲精品欧美成人 | 中文字幕大全 | 国产精品自产拍在线观看 | 午夜精品导航 | 在线播放国产精品 | 欧美视频在线观看免费网址 | 久久综合爱 | 天天操天天干天天综合网 | 亚州人成在线播放 | 亚洲最新视频在线播放 | 天天色.com| 国产九九九精品视频 | 亚洲精品综合一二三区在线观看 | 久久99国产精品久久99 | 久草视频在线资源站 | 99久久精品久久久久久动态片 | 最新婷婷色 | 香蕉在线视频观看 | 99精品国产aⅴ | 97国产精品| 欧美亚洲xxx | 亚洲永久精品一区 | 成人理论在线观看 | 观看免费av | 国产精品久久久久久久av电影 | 最近免费在线观看 | 国产天天综合 | 国产一区二区网址 | 久久这里有精品 | 久久在线精品视频 | 亚洲精品永久免费视频 | 免费观看一级 | 去看片 | 久久视频免费在线观看 | 狠狠色狠狠综合久久 | 黄色在线观看污 | 亚洲欧美日韩国产精品一区午夜 | 欧美日韩国产综合网 | 亚洲综合欧美激情 | 手机看片中文字幕 | 亚洲综合成人专区片 | 亚洲黄色软件 | 日日夜色 | 激情综合网天天干 | 欧美视频www| 久久国产亚洲视频 | 婷婷色综合网 | 欧美日本一二三 | 91av视频免费观看 | 欧美人人 |