投稿数 - 437, コメント - 11084, トラックバック - 156

LINQ Tips - 複数のキーを使って join

C# には join ステートメントがあり、2つのコレクションを結合できるのだが、結合のためのキーが一つしか指定できない。どうしたら複数のキーを使って結合できるのか?

キーに匿名型を使えば良いだけ。

using System;
using System.Linq;

class Data
{
    public int X { get; set; }
    public int Y { get; set; }
    public override string ToString()
    {
        return String.Format("X = {0}, Y = {1}", X, Y);
    }
}

class Program
{
    static void Main()
    {
        var data1 = new[] {
            new Data { X = 1, Y = 1 },
            new Data { X = 2, Y = 2 },
            new Data { X = 3, Y = 3 },
            new Data { X = 4, Y = 4 },
            new Data { X = 5, Y = 5 },
        };

        var data2 = new[] {
            new Data { X = 1, Y = 5 },
            new Data { X = 2, Y = 4 },
            new Data { X = 3, Y = 3 },
            new Data { X = 4, Y = 2 },
            new Data { X = 5, Y = 1 },
        };

        Console.WriteLine("単一の値で join");

        var query1 = from d1 in data1
                     join d2 in data2 on d1.X equals d2.X
                     select d1;

        query1.ToList().ForEach(Console.WriteLine);

        Console.WriteLine("複数の値で join");

        var query2 = from d1 in data1
                     join d2 in data2 on new { d1.X, d1.Y } equals new { d2.X, d2.Y }
                     select d1;

        query2.ToList().ForEach(Console.WriteLine);
    }
}

 join_run

投稿日時 : 2008年8月31日 12:31

フィードバック

# re: LINQ Tips - 複数のキーを使って join

ほー。
どうも equals での比較には IEqualityComparer が使われるようですな。
2008/08/31 17:44 | シャノン

# re: LINQ Tips - 複数のキーを使って join

なーんも考えんと普通に Equals 使っとるんかと思ってた。
2008/09/02 0:21 | 囚人

# http://lvshoulderbagbuy.sinaapp.com/

?婁笘?便伀?倞????傘?????亜?樹??с????
2012/10/20 2:59 | Louis Vuitton

# Wonderful blog! I found it while browsing on Yahoo News. Do you have any tips on how to get listed in Yahoo News? I've been trying for a while but I never seem to get there! Thanks

Wonderful blog! I found it while browsing on Yahoo News.
Do you have any tips on how to get listed in Yahoo News?
I've been trying for a while but I never seem to get there!
Thanks

# Link exchange is nothing else however it is just placing the other person's blog link on your page at suitable place and other person will also do similar in favor of you.

Link exchange is nothing else however it is just
placing the other person's blog link on your page at suitable place and other person will also do similar
in favor of you.

# I constantly spent my half an hour to read this webpage's articles all the time along with a cup of coffee.

I constantly spent my half an hour to read this webpage's articles all the
time along with a cup of coffee.

# Can you tell us more about this? I'd like to find out more details.

Can you tell us more about this? I'd like to find out more details.

# Asking questions are really good thing if you are not understanding something fully, except this piece of writing offers fastidious understanding yet.

Asking questions are really good thing if you are not understanding
something fully, except this piece of writing offers fastidious understanding yet.

# Fascinating blog! Is your theme custom made or did you download it from somewhere? A design like yours with a few simple tweeks would really make my blog stand out. Please let me know where you got your theme. Cheers

Fascinating blog! Is your theme custom made or did you download it from somewhere?
A design like yours with a few simple tweeks would
really make my blog stand out. Please let me know where you got your theme.
Cheers

# When someone writes an post he/she retains the idea of a user in his/her mind that how a user can be aware of it. Therefore that's why this piece of writing is outstdanding. Thanks!

When someone writes an post he/she retains the idea
of a user in his/her mind that how a user can be aware of it.
Therefore that's why this piece of writing is outstdanding.
Thanks!

# After looking into a few of the articles on your website, I really appreciate your way of writing a blog. I saved as a favorite it to my bookmark site list and will be checking back soon. Take a look at my web site as well and let me know what you think.

After looking into a few of the articles on your website,
I really appreciate your way of writing a blog.
I saved as a favorite it to my bookmark site list and will be checking back soon. Take a look
at my web site as well and let me know what you think.

# Sweet blog! I found it while searching on Yahoo News. Do you have any tips on how to get listed in Yahoo News? I've been trying for a while but I never seem to get there! Thanks

Sweet blog! I found it while searching on Yahoo News.
Do you have any tips on how to get listed in Yahoo News?

I've been trying for a while but I never seem to get there!
Thanks

# I every time spent my half an hour to read this web site's posts everyday along with a mug of coffee.

I every time spent my half an hour to read this web site's posts everyday
along with a mug of coffee.

# Can I just say what a comfort to find someone who genuinely knows what they're discussing on the web. You actually know how to bring a problem to light and make it important. More and more people really need to check this out and understand this side o

Can I just say what a comfort to find someone who genuinely knows what they're discussing on the web.
You actually know how to bring a problem to light and
make it important. More and more people really need to check this out
and understand this side of the story. I
was surprised that you are not more popular because you
certainly possess the gift.

# Hey! I just wanted to ask if you ever have any trouble with hackers? My last blog (wordpress) was hacked and I ended up losing many months of hard work due to no backup. Do you have any solutions to prevent hackers?

Hey! I just wanted to ask if you ever have any
trouble with hackers? My last blog (wordpress) was hacked and
I ended up losing many months of hard work due to no
backup. Do you have any solutions to prevent hackers?

# Good day! I know this is kinda off topic but I was wondering if you knew where I could locate a captcha plugin for my comment form? I'm using the same blog platform as yours and I'm having difficulty finding one? Thanks a lot!

Good day! I know this is kinda off topic but I was wondering if you
knew where I could locate a captcha plugin for my comment form?

I'm using the same blog platform as yours and I'm having difficulty
finding one? Thanks a lot!

# Fastidious response in return of this difficulty with genuine arguments and telling everything about that.

Fastidious response in return of this difficulty with genuine arguments and telling everything about that.

# My programmer is trying to persuade me to move to .net from PHP. I have always disliked the idea because of the costs. But he's tryiong none the less. I've been using WordPress on several websites for about a year and am nervous about switching to anothe

My programmer is trying to persuade me to move to .net from
PHP. I have always disliked the idea because of the costs.
But he's tryiong none the less. I've been using WordPress
on several websites for about a year and am nervous about switching to another platform.
I have heard excellent things about blogengine.net. Is there a way I can import all my wordpress posts into it?
Any help would be greatly appreciated!

# certainly like your web site but you need to test the spelling on several of your posts. Several of them are rife with spelling problems and I find it very troublesome to tell the reality nevertheless I will definitely come back again.

certainly like your web site but you need to test the spelling on several of your posts.
Several of them are rife with spelling problems and I find it very
troublesome to tell the reality nevertheless I will definitely come back again.

# Can I simply just say what a relief to find an individual who truly understands what they are discussing on the internet. You actually understand how to bring a problem to light and make it important. More and more people must read this and understand

Can I simply just say what a relief to find an individual who truly understands what they are discussing on the internet.
You actually understand how to bring a problem to light and make it important.

More and more people must read this and understand this side of your story.
I can't believe you're not more popular since you certainly have the gift.

# Thankfulness to my father who stated to me about this blog, this website is really awesome.

Thankfulness to my father who stated to me about this blog, this website is really awesome.

# I've been surfing on-line greater than 3 hours as of late, yet I by no means found any attention-grabbing article like yours. It's lovely value sufficient for me. In my view, if all web owners and bloggers made excellent content material as you did, the

I've been surfing on-line greater than 3 hours as of late,
yet I by no means found any attention-grabbing article like yours.
It's lovely value sufficient for me. In my view, if all web owners
and bloggers made excellent content material as you did, the web shall be
much more helpful than ever before.

# Fantastic beat ! I would like to apprentice while you amend your web site, how could i subscribe for a blog website? The account helped me a acceptable deal. I had been a little bit acquainted of this your broadcast provided bright clear idea

Fantastic beat ! I would like to apprentice while you amend your
web site, how could i subscribe for a blog website?

The account helped me a acceptable deal. I had been a little bit acquainted of this your broadcast provided bright clear
idea

# I am sure this piece of writing has touched all the internet viewers, its really really pleasant paragraph on building up new weblog.

I am sure this piece of writing has touched all the internet viewers,
its really really pleasant paragraph on building up new weblog.

# Hi, i think that i saw you visited my site so i came to “return the favor”.I am trying to find things to enhance my web site!I suppose its ok to use a few of your ideas!!

Hi, i think that i saw you visited my site so i came to “return the favor”.I am trying to find things to enhance my web site!I suppose its ok to use a few of your ideas!!

# wonderful points altogether, you simply gained a brand new reader. What would you suggest in regards to your publish that you just made some days ago? Any sure?

wonderful points altogether, you simply gained a brand
new reader. What would you suggest in regards to your publish that you
just made some days ago? Any sure?

# No matter if some one searches for his necessary thing, so he/she desires to be available that in detail, so that thing is maintained over here.

No matter if some one searches for his necessary
thing, so he/she desires to be available that in detail,
so that thing is maintained over here.

# facebook find love - It's difficult to find educated people about this subject, however, you sound like you know what you're talking about! Thanks

facebook find love -
It's difficult to find educated people about this subject, however,
you sound like you know what you're talking about!
Thanks

# facebook find love - Its not my first time to pay a visit this site, i am visiting this website dailly and obtain pleasant facts from here all the time.

facebook find love -
Its not my first time to pay a visit this site, i am visiting
this website dailly and obtain pleasant facts from
here all the time.

# facebook find love - Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You clearly know what youre talking about, why waste your intelligence on just posting videos to your weblog when you c

facebook find love -
Write more, thats all I have to say. Literally, it seems as though you
relied on the video to make your point. You clearly know what youre talking about, why waste your intelligence
on just posting videos to your weblog when you could
be giving us something enlightening to read?

# I'm not sure exactly why but this site is loading very slow for me. Is anyone else having this problem or is it a issue on my end? I'll check back later on and see if the problem still exists.

I'm not sure exactly why but this site is loading very slow for me.

Is anyone else having this problem or is it a issue on my end?
I'll check back later on and see if the problem still exists.

# Fabulous, what a webpage it is! This webpage presents valuable data to us, keep it up.

Fabulous, what a webpage it is! This webpage presents valuable data to us,
keep it up.

# Wow that was strange. I just wrote an very long comment but after I clicked submit my comment didn't appear. Grrrr... well I'm not writing all that over again. Anyway, just wanted to say great blog!

Wow that was strange. I just wrote an very long comment but after I clicked submit my comment didn't
appear. Grrrr... well I'm not writing all that over again. Anyway, just wanted to say great blog!

# Right away I am ready to do my breakfast, when having my breakfast coming over again to read more news.

Right away I am ready to do my breakfast, when having my breakfast coming over again to
read more news.

# I couldn't refrain from commenting. Very well written!

I couldn't refrain from commenting. Very well written!

# Good day! I know this is kind of off topic but I was wondering if you knew where I could find a captcha plugin for my comment form? I'm using the same blog platform as yours and I'm having trouble finding one? Thanks a lot!

Good day! I know this is kind of off topic but I was wondering if
you knew where I could find a captcha plugin for my comment form?

I'm using the same blog platform as yours and I'm having trouble finding
one? Thanks a lot!

# I don't even know how I ended up here, but I thought this post was great. I do not know who you are but definitely you're going to a famous blogger if you are not already ;) Cheers!

I don't even know how I ended up here, but I thought this post was great.
I do not know who you are but definitely you're going to a famous blogger if you are not already
;) Cheers!

# What a stuff of un-ambiguity and preserveness of valuable know-how about unpredicted feelings.

What a stuff of un-ambiguity and preserveness of valuable know-how about unpredicted feelings.

# Hello! Do you know if they make any plugins to safeguard against hackers? I'm kinda paranoid about losing everything I've worked hard on. Any suggestions?

Hello! Do you know if they make any plugins to safeguard against hackers?
I'm kinda paranoid about losing everything I've
worked hard on. Any suggestions?

# I am genuinely delighted to read this webpage posts which consists of plenty of helpful data, thanks for providing these kinds of data.

I am genuinely delighted to read this webpage posts which
consists of plenty of helpful data, thanks for providing these kinds
of data.

# Hi to every one, as I am really keen of reading this blog's post to be updated daily. It contains pleasant information.

Hi to every one, as I am really keen of reading this blog's post to be updated
daily. It contains pleasant information.

# Today, I went to the beach with my kids. I found a sea shell and gave it to my 4 year old daughter and said "You can hear the ocean if you put this to your ear." She placed the shell to her ear and screamed. There was a hermit crab inside and

Today, I went to the beach with my kids. I found a sea shell and gave it to my 4 year old daughter
and said "You can hear the ocean if you put this to your ear." She placed the shell to her ear and screamed.
There was a hermit crab inside and it pinched her ear.
She never wants to go back! LoL I know this is totally off topic
but I had to tell someone!

# Spot on with this write-up, I seriously think this website needs much more attention. I'll probably be returning to read more, thanks for the info!

Spot on with this write-up, I seriously think this website needs much more attention. I'll probably be returning to
read more, thanks for the info!

# I am not sure where you are getting your info, but great topic. I needs to spend some time learning more or understanding more. Thanks for wonderful information I was looking for this information for my mission.

I am not sure where you are getting your info, but great
topic. I needs to spend some time learning more or understanding more.

Thanks for wonderful information I was looking
for this information for my mission.

# Hey there! This is kind of off topic but I need some help from an established blog. Is it hard to set up your own blog? I'm not very techincal but I can figure things out pretty fast. I'm thinking about creating my own but I'm not sure where to start. Do

Hey there! This is kind of off topic but I need some help from an established blog.
Is it hard to set up your own blog? I'm not very techincal but I can figure things out pretty fast.
I'm thinking about creating my own but I'm not sure where to start.
Do you have any points or suggestions? Appreciate it

# If you desire to improve your knowledge just keep visiting this website and be updated with the latest news update posted here.

If you desire to improve your knowledge just keep visiting this website and be updated with the latest news update posted here.

# I got this web page from my friend who told me concerning this site and now this time I am visiting this web site and reading very informative content at this place.

I got this web page from my friend who told me concerning this
site and now this time I am visiting this web site and reading
very informative content at this place.

# Hi, i believe that i saw you visited my website so i came to return the favor?.I am trying to to find issues to enhance my site!I guess its adequate to make use of some of your concepts!!

Hi, i believe that i saw you visited my website so i came to
return the favor?.I am trying to to find issues to enhance my site!I guess its adequate
to make use of some of your concepts!!

# Hi there, I enjoy reading all of your post. I wanted to write a little comment to support you.

Hi there, I enjoy reading all of your post. I wanted to write a little comment to support you.

# Inspiring story there. What occurred after? Thanks!

Inspiring story there. What occurred after? Thanks!

# It's a pity you don't have a donate button! I'd definitely donate to this outstanding blog! I guess for now i'll settle for bookmarking and adding your RSS feed to my Google account. I look forward to brand new updates and will talk about this blog with

It's a pity you don't have a donate button! I'd definitely donate to this outstanding blog!
I guess for now i'll settle for bookmarking and adding your
RSS feed to my Google account. I look forward to brand new updates and will
talk about this blog with my Facebook group. Talk soon!

# My spouse and I stumbled over here different web page and thought I may as well check things out. I like what I see so now i'm following you. Look forward to finding out about your web page repeatedly.

My spouse and I stumbled over here different web page and thought I may as well check things out.
I like what I see so now i'm following you.

Look forward to finding out about your web page repeatedly.

# I have read so many content about the blogger lovers however this post is truly a fastidious piece of writing, keep it up.

I have read so many content about the blogger lovers however this
post is truly a fastidious piece of writing, keep it up.

# Hi! Someone in my Facebook group shared this site with us so I came to check it out. I'm definitely loving the information. I'm bookmarking and will be tweeting this to my followers! Terrific blog and brilliant design.

Hi! Someone in my Facebook group shared this site with us
so I came to check it out. I'm definitely loving the
information. I'm bookmarking and will be tweeting this to my
followers! Terrific blog and brilliant design.

# Good day! I could have sworn I've been to this site before but after reading through some of the post I realized it's new to me. Nonetheless, I'm definitely happy I found it and I'll be bookmarking and checking back often!

Good day! I could have sworn I've been to this site before but after reading through some of the post I realized it's new to me.
Nonetheless, I'm definitely happy I found it and I'll be bookmarking and checking
back often!

# Hi to every body, it's my first pay a quick visit of this webpage; this web site carries remarkable and genuinely good data in favor of readers.

Hi to every body, it's my first pay a quick visit of this webpage;
this web site carries remarkable and genuinely good data
in favor of readers.

# Good day! I simply want to offer you a huge thumbs up for your great information you have right here on this post. I will be returning to your web site for more soon.

Good day! I simply want to offer you a huge thumbs up for your great information you have right here on this post.
I will be returning to your web site for more
soon.

# I think that is among the so much vital information for me. And i'm glad reading your article. However want to remark on few common issues, The website taste is ideal, the articles is in point of fact great : D. Just right task, cheers

I think that is among the so much vital information for me.
And i'm glad reading your article. However want to remark
on few common issues, The website taste is ideal, the articles is in point of fact great
: D. Just right task, cheers

# I love what you guys tend to be up too. This sort of clever work and exposure! Keep up the terrific works guys I've included you guys to my own blogroll.

I love what you guys tend to be up too. This sort of clever work and exposure!
Keep up the terrific works guys I've included
you guys to my own blogroll.

# Have you ever thought about creating an ebook or guest authoring on other sites? I have a blog based on the same information you discuss and would really like to have you share some stories/information. I know my viewers would value your work. If you're

Have you ever thought about creating an ebook or guest authoring on other sites?
I have a blog based on the same information you discuss and would really like to have you share some stories/information. I know
my viewers would value your work. If you're even remotely interested, feel free to shoot me an e mail.

# If some one wants to be updated with most up-to-date technologies after that he must be visit this website and be up to date all the time.

If some one wants to be updated with most up-to-date technologies after that he must be visit this website and be up to date
all the time.

# Have you ever considered about including a little bit more than just your articles? I mean, what you say is important and everything. However think about if you added some great images or videos to give your posts more, "pop"! Your content is e

Have you ever considered about including a little bit more than just your articles?
I mean, what you say is important and everything. However
think about if you added some great images or videos to give your
posts more, "pop"! Your content is excellent but with pics
and videos, this site could certainly be one of the
very best in its niche. Wonderful blog!

# There is definately a lot to know about this subject. I like all the points you have made.

There is definately a lot to know about this subject.

I like all the points you have made.

# Hello, all is going fine here and ofcourse every one is sharing facts, that's genuinely good, keep up writing.

Hello, all is going fine here and ofcourse every one is sharing facts,
that's genuinely good, keep up writing.

# Wonderful website. A lot of helpful info here. I am sending it to several buddies ans also sharing in delicious. And obviously, thanks in your effort!

Wonderful website. A lot of helpful info here.
I am sending it to several buddies ans also
sharing in delicious. And obviously, thanks in your effort!

# Everyone loves what you guys tend to be up too. This type of clever work and coverage! Keep up the wonderful works guys I've included you guys to blogroll.

Everyone loves what you guys tend to be up too.

This type of clever work and coverage! Keep up the wonderful works guys I've included you guys to blogroll.

# This is a topic which is close to my heart... Cheers! Where are your contact details though?

This is a topic which is close to my heart... Cheers! Where are your contact details though?

# You can definitely see your skills in the article you write. The world hopes for even more passionate writers such as you who are not afraid to mention how they believe. All the time go after your heart.

You can definitely see your skills in the article you write.
The world hopes for even more passionate writers such as you who are
not afraid to mention how they believe. All the time go after
your heart.

# Good web site you've got here.. It's hard to find quality writing like yours these days. I truly appreciate individuals like you! Take care!!

Good web site you've got here.. It's hard to find quality
writing like yours these days. I truly appreciate individuals like you!
Take care!!

# What i don't realize is actually how you're now not actually much more smartly-favored than you might be now. You're so intelligent. You already know thus considerably in relation to this matter, made me individually believe it from so many various ang

What i don't realize is actually how you're now not actually much more smartly-favored than you might be now.
You're so intelligent. You already know thus considerably
in relation to this matter, made me individually believe it
from so many various angles. Its like women and men aren't interested except
it's one thing to do with Girl gaga! Your own stuffs
outstanding. At all times care for it up!

# I read this post completely about the difference of hottest and previous technologies, it's amazing article.

I read this post completely about the difference of hottest and previous technologies, it's amazing article.

# Piece of writing writing is also a fun, if you know then you can write otherwise it is difficult to write.

Piece of writing writing is also a fun, if you know then you can write otherwise it
is difficult to write.

# Good way of explaining, and pleasant article to take data on the topic of my presentation focus, which i am going to deliver in academy.

Good way of explaining, and pleasant article to
take data on the topic of my presentation focus, which
i am going to deliver in academy.

# When some one searches for his required thing, therefore he/she wants to be available that in detail, so that thing is maintained over here.

When some one searches for his required thing, therefore he/she wants to be available that in detail, so that thing is maintained over here.

# I delight in, result in I discovered exactly what I was having a look for. You have ended my 4 day long hunt! God Bless you man. Have a great day. Bye

I delight in, result in I discovered exactly what I was having a look for.
You have ended my 4 day long hunt! God Bless
you man. Have a great day. Bye

# It's enormous that you are getting thoughts from this piece of writing as well as from our discussion made here.

It's enormous that you are getting thoughts from
this piece of writing as well as from our discussion made here.

# I am really loving the theme/design of your website. Do you ever run into any web browser compatibility issues? A number of my blog audience have complained about my blog not operating correctly in Explorer but looks great in Firefox. Do you have any rec

I am really loving the theme/design of your website.
Do you ever run into any web browser compatibility issues?
A number of my blog audience have complained about my blog not operating correctly in Explorer but looks great in Firefox.
Do you have any recommendations to help fix this problem?

# Highly energetic post, I enjoyed that bit. Will there be a part 2?

Highly energetic post, I enjoyed that bit. Will there
be a part 2?

# Awesome issues here. I'm very satisfied to peer your article. Thanks a lot and I am looking forward to touch you. Will you please drop me a e-mail?

Awesome issues here. I'm very satisfied to peer your article.
Thanks a lot and I am looking forward to touch you.
Will you please drop me a e-mail?

# Hi, I do believe this is a great web site. I stumbledupon it ;) I'm going to return yet again since I book marked it. Money and freedom is the greatest way to change, may you be rich and continue to help others.

Hi, I do believe this is a great web site. I stumbledupon it ;) I'm going to return yet
again since I book marked it. Money and freedom is the greatest way to change,
may you be rich and continue to help others.

# We stumbled over here coming from a different website and thought I might as well check things out. I like what I see so now i'm following you. Look forward to finding out about your web page repeatedly.

We stumbled over here coming from a different website and thought
I might as well check things out. I like
what I see so now i'm following you. Look forward to finding
out about your web page repeatedly.

# Hey there just wanted to give you a quick heads up and let you know a few of the pictures aren't loading properly. I'm not sure why but I think its a linking issue. I've tried it in two different internet browsers and both show the same outcome.

Hey there just wanted to give you a quick heads
up and let you know a few of the pictures aren't loading properly.
I'm not sure why but I think its a linking issue. I've tried it in two different internet browsers and both show the same outcome.

# Just desire to say your article is as amazing. The clarity in your post is just spectacular and i could assume you are an expert on this subject. Fine with your permission allow me to grab your RSS feed to keep up to date with forthcoming post. Thanks a

Just desire to say your article is as amazing.
The clarity in your post is just spectacular and i
could assume you are an expert on this subject. Fine with your permission allow me to grab
your RSS feed to keep up to date with forthcoming post.
Thanks a million and please keep up the gratifying
work.

# For most up-to-date information you have to visit internet and on internet I found this web page as a finest website for latest updates.

For most up-to-date information you have to visit internet and on internet I found this web
page as a finest website for latest updates.

# Excellent blog you've got here.. It's difficult to find high-quality writing like yours nowadays. I really appreciate people like you! Take care!!

Excellent blog you've got here.. It's difficult to find high-quality
writing like yours nowadays. I really appreciate people like you!
Take care!!

# Hi there, just wanted to say, I enjoyed this post. It was helpful. Keep on posting!

Hi there, just wanted to say, I enjoyed this post.

It was helpful. Keep on posting!

# Hello there! This article couldn't be written any better! Looking at this article reminds me of my previous roommate! He constantly kept preaching about this. I most certainly will send this article to him. Fairly certain he will have a very good read.

Hello there! This article couldn't be written any better!
Looking at this article reminds me of my previous roommate!

He constantly kept preaching about this. I most certainly will
send this article to him. Fairly certain he will
have a very good read. Many thanks for sharing!

# I am regular reader, how are you everybody? This article posted at this web site is genuinely good.

I am regular reader, how are you everybody?
This article posted at this web site is genuinely good.

コメントの投稿

タイトル  
名前  
URL
コメント